我尝试使用GUI打开和关闭LED。
当我执行代码时,我得到一个空白框,只是说" tk"标题。
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.pack()
Label(frame, text='Turn LED ON').grid(row=0, column=0)
Label(frame, text='Turn LED OFF').grid(row=1, column=0)
self.button = Button(frame, text='LED 0 ON', command=self.convert0)
self.button.grid(row=2, columnspan=2)
def convert0(self, tog=[0]):
tog[0] = not tog[0]
if tog[0]:
self.button.config(text='LED 0 OFF')
else:
self.button.config(text='LED 0 ON')
root = tk.Tk()
app = Application(master=root)
app.mainloop()
答案 0 :(得分:0)
您的代码需要多次修复。
首先,按原样运行它会给我以下错误:
NameError: name 'Label' is not defined
当然,事实并非如此。
定义的是tk.Label
,所以我们改变这两行:
Label(frame, text='Turn LED ON').grid(row=0, column=0)
Label(frame, text='Turn LED OFF').grid(row=1, column=0)
成:
tk.Label(frame, text='Turn LED ON').grid(row=0, column=0)
tk.Label(frame, text='Turn LED OFF').grid(row=1, column=0)
现在,我提出了以下错误:
NameError: name 'frame' is not defined
果然,它也不是。
您可能正在引用Application
类扩展tk.Frame
类的事实。
嗯,这是真的,但这并没有告诉我们frame
是什么。
我假设frame
表示“实例,但被视为Frame
实例”。
在这种情况下,self
就足够了(实际上它就是需要的)。
所以我们在这里,以下三行:
tk.Label(frame, text='Turn LED ON').grid(row=0, column=0)
tk.Label(frame, text='Turn LED OFF').grid(row=1, column=0)
self.button = Button(frame, text='LED 0 ON', command=self.convert0)
成为:
tk.Label(self, text='Turn LED ON').grid(row=0, column=0)
tk.Label(self, text='Turn LED OFF').grid(row=1, column=0)
self.button = Button(self, text='LED 0 ON', command=self.convert0)
现在,我被告知
NameError: name 'Button' is not defined
我相信你已经开始理解这一点了。
因此,我们将Button
替换为tk.Button
:
self.button = tk.Button(self, text='LED 0 ON', command=self.convert0)
在这里,显示窗口,显示两个标签和一个漂亮按钮,单击时文本会发生变化。