我想做的基本上是切换按钮。
按下按钮1时,它会被破坏,然后启动按钮2。
我遇到了错误,这是代码。
from Tkinter import *
root = Tk()
root.title('TEST')
def D1():
B.destroy()
Launch2()
def D2():
B2.destroy()
Launch1()
def Launch1():
B = Button (root, text = 'BUTTON 1', command = D1)
B.pack()
def Launch2():
B2 = Button (root, text = 'BUTTON 2', command = D2)
B2.pack()
Launch1()
mainloop()
错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1541, in __call__
return self.func(*args)
File "C:\Users\youse\Desktop\Tkinter Testing GUI.py", line 5, in D1
B.destroy()
NameError: global name 'B' is not defined
答案 0 :(得分:0)
函数Launch1中的变量B仅在该函数中本地定义 B2也是如此。 因此,D1功能不能访问B,而D2功能不能访问B2。
您需要找到一种使函数D看到变量B的方法 一种解决方案是在函数外部创建B,然后在两个函数launch1和D中使用全局B-然后对B2执行相同的操作 这不是推荐的解决方案,通常您会定义一个可以容纳B,B2和这四个函数的类,那么就不需要全局变量
答案 1 :(得分:0)
只需以以下方式将行B和B2添加到代码中即可:
def Launch1():
global B # Make B a global variable
B = Button (root, text = 'BUTTON 1', command = D1)
B.pack()
def Launch2():
global B2 # Make B2 a global variable
B2 = Button (root, text = 'BUTTON 2', command = D2)
B2.pack()
该程序现在非常适合我。