如何修复“无法在内部使用几何图形管理器网格”。其中已经有由包'

时间:2019-01-23 00:13:23

标签: python-3.x tkinter

我是Tkinter的新手,正在尝试创建一个带有按钮的窗口,该按钮在单击时会打开另一个窗口。尝试打开新窗口时,出现上述错误。我知道pack()和grid()不能一起使用,但这会引起更多的混乱。

在主窗口中,我尝试删除self.pack行,但是主窗口中没有任何显示。删除它之后,我尝试调用self.grid,所有内容都显示出来,但是位置不正确(它们都卡在了左上角)。我认为正在发生的是self.pack行在新窗口中引起了问题,但是我不确定这是否是引起问题的原因。如果是这样,我不明白为什么。

这是主窗口

class Window(Frame):
    #constructor
    def __init__(self,master = None):
        Frame.__init__(self,master)
        self.master = master

        self.init_window()

    #create the window
    def init_window(self):
        self.master.title("Japanese Word A Day")

        #configure the grid
        self.columnconfigure(1,weight=1)
        self.rowconfigure(1,weight=1)

        #configure the view history button
        view_button = Button(self, text="View\nSaved Words", command=self.view_history)
        view_button.grid(column=3,row=5)

        #fill the window - without this line, nothing shows up
        self.pack(fill=BOTH, expand=1)

    def view_history(self):
        self.h_window = Toplevel(self.master)
        history = History(self.h_window)   

这是新窗口

class History(Frame):
    def __init__(self,master):
        Frame.__init__(self,master)
        self.master = master
        self.init_window()

    def init_window(self):
        self.master.title("Japanese Word A Day - History")
        self.master.geometry("600x600")

        headers = ("English","Kanji","Kana","Romaji","Pronunciation")
        self.tree = ttk.Treeview(columns=headers,show="headings")

        self.y_scroll = ttk.Scrollbar(orient=VERTICAL,command=self.tree.yview)
        self.tree['yscroll'] = self.y_scroll.set

        self.rowconfigure(0,weight=1)
        self.columnconfigure(0,weight=1)

        self.tree.grid(row=0,column=0,sticky=NSEW)
        self.y_scroll.grid(row=0, column=1,sticky=NS)

这是实例化主窗口的代码

root = Tk()
root.geometry("400x300")
app = Window(root)
root.mainloop()

这是在Python 3.6.8中。通过在线查看网格管理器的示例,我已经看到一些程序包括该软件包,而另一些则没有。

0 个答案:

没有答案