无法在其中使用几何图形管理器包

发布于 2021-01-29 19:24:22

因此,我使用tkinter库制作了一个rss阅读器,并用一种​​方法创建了一个文本小部件。在我尝试向其中添加滚动条之前,它显示得很好。

这是滚动条之前的代码:

   def create_text(self, root):
        self.textbox = Text(root, height = 10, width = 79, wrap = 'word')
        self.textbox.grid(column = 0, row = 0)

这是我的代码之后:

def create_text(self, root):
        self.textbox = Text(root, height = 10, width = 79, wrap = 'word')
        vertscroll = ttk.Scrollbar(root)
        vertscroll.config(command=self.textbox.yview)
        vertscroll.pack(side="right", fill="y", expand=False)
        self.textbox.config(yscrllcommand=vertscroll.set)
        self.textbox.pack(side="left", fill="both", expand=True)
        self.textbox.grid(column = 0, row = 0)

这给我错误

_tkinter.TclError:无法在.56155888内部使用几何管理器包,该软件包已经在vertscroll.pack(side =“
right”,fill =“ y”,expand = False)行上由网格管理从属

任何想法如何解决这一问题?

关注者
0
被浏览
46
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    对文档,不混合pack,并grid在相同的主窗口:

    警告:切勿在同一主窗口中混合网格和打包。Tkinter会愉快地度过余生,以期寻求双方经理都满意的解决方案。不要等待,而是终止应用程序,然后再看一遍您的代码。一个常见的错误是对某些小部件使用错误的父级。

    因此,如果您grid在文本框上调用,请不要pack在滚动条上调用。


    import Tkinter as tk
    import ttk
    
    class App(object):
        def __init__(self, master, **kwargs):
            self.master = master
            self.create_text()
    
        def create_text(self):
            self.textbox = tk.Text(self.master, height = 10, width = 79, wrap = 'word')
            vertscroll = ttk.Scrollbar(self.master)
            vertscroll.config(command=self.textbox.yview)
            self.textbox.config(yscrollcommand=vertscroll.set)
            self.textbox.grid(column=0, row=0)
            vertscroll.grid(column=1, row=0, sticky='NS')
    
    root = tk.Tk()
    app = App(root)
    root.mainloop()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看