我有两个列表框,一个在另一个旁边,我希望每个列表框都有水平和垂直滚动条。我已经设法创建了它们,但是当我按下滚动条上的箭头时,没有任何反应,我看不到整个内容。
这是我到目前为止的代码:
from Tkinter import *
root = Tk()
frame4 = Frame(root)
frame4.grid(row=2,columnspan=2,sticky=E+W)
l5 = Label(frame4, text='Output:').grid(row=0,columnspan=2)
frame5 = Frame(frame4)
frame5.grid(row=1,column=0,sticky=E+W)
l6 = Label(frame5, text='Algo1:').pack()
yscroll1 = Scrollbar(frame5, orient=VERTICAL)
xscroll1 = Scrollbar(frame5, orient=HORIZONTAL)
output_algo = Listbox(frame5,height=5, width=40)
output_algo.config (yscrollcommand=xscroll1.set)
output_algo.config (yscrollcommand=yscroll1.set)
yscroll1.config (command=output_algo.yview)
xscroll1.config (command=output_algo.yview)
yscroll1.pack(side=RIGHT, fill=Y,expand=0)
xscroll1.pack(side=BOTTOM, fill=X,expand=0)
output_algo.pack(side=LEFT,fill=BOTH,expand=1)
frame6 = Frame(frame4)
frame6.grid(row=1,column=1,sticky=E+W)
l7 = Label(frame6, text='Algo2:').pack()
yscroll2 = Scrollbar(frame6, orient=VERTICAL)
xscroll2 = Scrollbar(frame6, orient=HORIZONTAL)
output_opt = Listbox(frame6,height=5, width=40)
output_opt.config (yscrollcommand=xscroll2.set)
output_opt.config (yscrollcommand=yscroll2.set)
yscroll2.config (command=output_opt.yview)
xscroll2.config (command=output_opt.yview)
yscroll2.pack(side=RIGHT, fill=Y,expand=0)
xscroll2.pack(side=BOTTOM, fill=X,expand=0)
output_opt.pack(side=LEFT,fill=BOTH,expand=1)
root.mainloop()
如何更改滚动条才能生效?
另外,我读到在滚动条的情况下使用grid
优于pack
。如果我要修改我的代码以使用grid
,我是否必须创建一个仅包含列表框和滚动条的框架?
答案 0 :(得分:3)
可能的复制和粘贴不是你的朋友:
output_algo.config (yscrollcommand=xscroll1.set)
应该是
output_algo.config (xscrollcommand=xscroll1.set)
和
xscroll1.config (command=output_algo.yview)
应该是
xscroll1.config (command=output_algo.xview)
当然,您需要为其他列表框执行相同的操作:)
答案 1 :(得分:0)
您无法滚动空Listbox
。
我在列表框中添加了一些元素,我可以上下滚动。
for item in range(30):
output_algo.insert(END, str(item)*item)
output_opt.insert(END, str(item)*item)
root.mainloop()
从左到右滚动存在一些问题,但我在xscroll1.config()