我是Stack Overflow的新成员。我发现了这个帖子,但我不被允许在上面评论或提问,所以我想在这里引用一下:如何在Python的Tkinter中创建一个交互式列表,包括可以编辑这些列表的按钮?
from tkinter import *
import os
import easygui as eg
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
# character box
Label(frame, text = "Characters Editor").grid(row = 0, column = 0, rowspan = 1, columnspan = 2)
charbox = Listbox(frame)
for chars in []:
charbox.insert(END, chars)
charbox.grid(row = 1, column = 0, rowspan = 5)
charadd = Button(frame, text = " Add ", command = self.addchar).grid(row = 1, column = 1)
charremove = Button(frame, text = "Remove", command = self.removechar).grid(row = 2, column = 1)
charedit = Button(frame, text = " Edit ", command = self.editchar).grid(row = 3, column = 1)
def addchar(self):
print("not implemented yet")
def removechar(self):
print("not implemented yet")
def editchar(self):
print("not implemented yet")
root = Tk()
root.wm_title("IA Development Kit")
app = App(root)
root.mainloop()
有人能解释一下为什么最后一行是root.mainloop()吗?作为一个Python的新手,来自过程化编程背景而没有面向对象的经验,我认为应该是app.mainloop()。
实际上,app = App(root),在代码的其余部分中从未再次使用app!我很难理解为什么root.mainloop()仍然可以工作。
root
初始化App
类时,将运行__init__
函数,其中加载所有GUI组件。mainloop
是Tk
的一个方法,它启动窗口的事件循环。因此,我们没有必要重新引用该class
(尽管在class
本身内部技术上需要这样做),因为我们初始化该class
时已经完成了所有需要的工作。 - anon582847382