所以我正在使用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 :(得分:18)
根据the docs,请勿在同一主窗口中混合使用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()
答案 1 :(得分:0)
代码的原因很简单,你不能在同一个类或相同的框架内使用pack和grid。因此,只使用一个。
答案 2 :(得分:0)
您不能在同一类或同一框架内使用包和网格。只能使用一个