我不明白为什么这段代码不工作。我试图使一个树视图在新的顶层窗口单击按钮后。但是当我添加一个滚动条到树视图-树视图消失(我评论与滚动条的部分)。下面是代码:
from tkinter import*
class Treeview(Toplevel):
def __init__(self, parent):
super().__init__(parent)
self.title('Contacts List')
self.geometry('1050x527')
columns = ('#1', '#2', '#3', '#4', '#5')
self = ttk.Treeview(self, columns=columns, show='headings')
self.heading('#1', text='Name')
self.heading('#2', text='Birthday')
self.heading('#3', text='Email')
self.heading('#4', text='Number')
self.heading('#5', text='Notes')
self.grid(row=0, column=0, sticky='nsew')
#scrollbar = ttk.Scrollbar(self, orient=VERTICAL, command=self.yview)
#self.configure(yscroll=scrollbar.set)
#scrollbar.grid(row=0, column=1, sticky='ns')
root = Tk()
def tree():
new= Treeview(root)
button7 = ttk.Button(root,text="Contacts", command=tree)
button7.grid(row=1,column=0)
root.mainloop()
您正在将self
重新定义为ttk.Treeview
实例。稍后,当您创建滚动条时,这会导致滚动条成为ttk.Treeview
小部件的子控件。
你绝对不应该重新定义self
。使用不同的变量,例如tree
。或者,使用self.tree
更好,这样您就可以从其他方法中引用该树。
class Treeview(Toplevel):
def __init__(self, parent):
super().__init__(parent)
self.title('Contacts List')
self.geometry('1050x527')
columns = ('#1', '#2', '#3', '#4', '#5')
self.tree = ttk.Treeview(self, columns=columns, show='headings')
self.tree.heading('#1', text='Name')
self.tree.heading('#2', text='Birthday')
self.tree.heading('#3', text='Email')
self.tree.heading('#4', text='Number')
self.tree.heading('#5', text='Notes')
self.tree.grid(row=0, column=0, sticky='nsew')
scrollbar = ttk.Scrollbar(self, orient=VERTICAL, command=self.tree.yview)
self.tree.configure(yscroll=scrollbar.set)
scrollbar.grid(row=0, column=1, sticky='ns')