我想從一個按鈕按下打開一個頂層部件,並從我發現的例子中在該框架內生成一個列表。然而,當我嘗試把所產生的幀中的小部件,我得到以下錯誤:不能把tkinter部件放在Toplevel框架中
_tkinter.TclError: can't put .!treeview inside .!errorexample.!toplevel.!mclistdemo.!frame.!frame
我已經縮小的問題
self.tree.grid(IN_ = F, row = 0,column = 0,sticky = NSEW)
在_create_treeview方法中。當in_命令被移除時,在父窗口中正確地生成小部件。我懷疑這個問題與我的父母/自我命名約定有關,但我仍然在努力抓住這個問題。
我跑過的大部分問題都有類似的描述,似乎是試圖在生成它的同時放置小部件,但在這段代碼中似乎並不是這種情況。
from tkinter import *
from tkinter import ttk
from tkinter.font import Font
class ErrorExample(Frame):
def __init__(self, parent):
Frame.__init__(self,parent)
self.grid()
self.parent=parent
self.b4=Button(
self,
text="Load",
command=lambda: self.createWindow())
self.b4.grid()
def createWindow(self):
self.t = Toplevel(self)
MCListDemo(self)
class MCListDemo(ttk.Frame):
def __init__(self, parent, isapp=True):
ttk.Frame.__init__(self, parent.t)
self.grid()
self.isapp = isapp
self._create_widgets()
def _create_widgets(self):
if self.isapp:
self._create_demo_panel()
def _create_demo_panel(self):
demoPanel = Frame(self)
demoPanel.grid()
self._create_treeview(demoPanel)
self._load_data()
def _create_treeview(self, parent):
f = ttk.Frame(parent)
f.grid()
self.dataCols = ('country', 'capital', 'currency')
self.tree = ttk.Treeview(columns=self.dataCols,
show = 'headings')
self.tree.grid(in_=f, row=0, column=0, sticky=NSEW)
start=Tk()
ErrorExample(start)
if __name__=="__main__":
main()