我試圖將一個滾動條附加到Tkinter的列表框中,但是隻要代碼到達.pack()行之一,它就會凍結......任何想法爲什麼? (我嘗試過運行一個示例代碼,它的功能與我在互聯網上找到的相同,並且工作正常)。爲什麼在包裝滾動條時Tkinter會凍結?
#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)
任何想法爲什麼這段代碼不起作用?
更新代碼:
#Read Box
self.scrollbar = Tkinter.Scrollbar(self.frame)
self.scrollbar2.grid(sticky=Tkinter.N+Tkinter.S) #row=1, column=2 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) #side=Tkinter.LEFT, fill=Tkinter.BOTH
self.scrollbar.config(command=self.read.yview)
好吧,這是一個小的失誤(我困惑滾動條和scrollbar2)。反正現在我有這樣的代碼:
#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)
您的代碼示例未提供足夠的信息。如果代碼凍結,它通常意味着兩件事之一:您創建了自己的無限循環(或長時間運行)循環,或者將網格和包裝混合在同一個容器中。只用您發佈的一小部分代碼來分辨您的問題是不可能的。 –
如果你的代碼不再被凍結,那麼你的問題已經找到了答案!所以,如果我的回答是正確的,請接受它。現在關於滾動條:也許你應該使用'self.mainloop()'命令? –
您的回答已被接受。我已經調用了一個主循環(),但是? – user573949