我试图在Tkinter中将滚动条附加到列表框中,但是每当代码到达.pack()行时,它就会冻结。。。知道为什么吗?(我尝试过运行一个示例代码,该代码与我在互联网上发现的相同,效果很好)。在
#Read Box
self.scrollbar = Tkinter.Scrollbar(self.frame)
#self.scrollbar.pack(side=Tkinter.RIGHT, fill=Tkinter.Y)
self.read = Tkinter.Listbox(self.frame, width=50, yscrollcommand=self.scrollbar.set)
self.read.grid(row=1,column=2)
#self.read.pack(side=Tkinter.LEFT, fill=Tkinter.BOTH)
self.scrollbar.config(command=self.read.yview)
你知道为什么这个代码不起作用吗?在
更新代码:
^{pr2}$好吧,这是个小错误(我把滚动条和滚动条2混淆了)。不管怎样,现在我有了这个代码:
#Read Box
self.scrollbar = Tkinter.Scrollbar(self.frame)
self.scrollbar.grid(row=1, column=2)
self.read = Tkinter.Listbox(self.frame, width=50, yscrollcommand=self.scrollbar.set)
self.read.grid(row=1,column=2)
self.scrollbar.config(command=self.read.yview)
这不会冻结并显示滚动条,但它们没有连接到(或对)列表框有任何控制。至于其余的代码,都是网格语句,没有包。在
我发现了问题,滚动条缺少sticky=Tkinter.N+Tkinter.S。这是完成的代码(添加了水平条)。在
#Read Box
self.scrollbar = Tkinter.Scrollbar(self.frame)
self.scrollbar.grid(row=1, column=3, sticky=Tkinter.N+Tkinter.S)
self.hbar = Tkinter.Scrollbar(self.frame, orient=Tkinter.HORIZONTAL)
self.hbar.grid(row=2, column=2, sticky=Tkinter.E+Tkinter.W)
self.read = Tkinter.Listbox(self.frame, width=50, yscrollcommand=self.scrollbar.set, xscrollcommand=self.hbar.set)
self.read.grid(row=1,column=2)
self.scrollbar.config(command=self.read.yview)
self.hbar.config(command=self.read.xview)
似乎您在同一级别混合}(即不是在两个独立的
pack
和{Frame
或其他地方)。这将使你的应用程序冻结,如文档中所述。在所以你应该做的是
.grid
你的滚动条:-)更多材料:如上所述,您可以混合不同的窗口管理器,但不能在同一框架内。以下内容是合法的并将有效:
相关问题 更多 >
编程相关推荐