【发布时间】:2021-04-05 00:51:44
【问题描述】:
这个问题是每次我点击提交按钮时,我都需要关闭并再次打开toplevel才能看到输入的数据。我只是想在 toplevel treeview 打开时单击 submit 按钮后自动更新 treeview。有什么办法解决这个问题?
这是我的代码:
from tkinter import *
from tkinter import ttk
class win1:
def __init__(self, master):
self.master = master
self.master.geometry('200x200+0+0')
self.fullname = StringVar()
self.age = StringVar()
self.example_lst = [('John', 12), ('Hannah', 10)]
self.lblname = Label(self.master, text='Name:')
self.lblname.pack()
self.entryname = Entry(self.master, textvariable=self.fullname)
self.entryname.pack()
self.lblage = Label(self.master, text='Age:')
self.lblage.pack()
self.entryage = Entry(self.master, textvariable=self.age)
self.entryage.pack()
self.btn1 = Button(self.master, text='Submit', command=self.submit)
self.btn1.pack()
self.btn2 = Button(self.master, text='Open window', command=self.openwin)
self.btn2.pack()
def submit(self):
self.example_lst.append((self.fullname.get(), self.age.get()))
self.fullname.set('')
self.age.set('')
def openwin(self):
self.openwin2 = Toplevel(self.master)
app = win2(self.openwin2, self)
class win2:
def __init__(self, master, mainwin):
self.master = master
self.mainwin = mainwin
self.master.geometry('300x300+100+100')
self.t_scroll = Scrollbar(self.master)
self.t_scroll.pack(side=RIGHT, fill=Y)
self.t_table = ttk.Treeview(self.master, yscrollcommand=self.t_scroll.set)
self.t_scroll.config(command=self.t_table.yview)
self.t_table['column'] = ('Name', 'Age')
self.t_table.column('#0', width=0, stretch=NO)
self.t_table.column('Name', width=50, minwidth=30)
self.t_table.column('Age', width=30, minwidth=30)
headings = ['#0', 'Name', 'Age']
txt_headings = ['', 'Name', 'Age']
for i in range(len(headings)):
self.t_table.heading(headings[i], text=f'{txt_headings[i]}', anchor=W)
for x in self.mainwin.example_lst:
self.t_table.insert(parent='', index='end', values=x)
self.t_table.pack()
def main():
root = Tk()
app = win1(root)
root.mainloop()
if __name__ == '__main__':
main()
【问题讨论】:
-
类名使用大写
-
好的,谢谢你的提醒
-
也可以立即打包小部件,然后向其中添加东西