我有一些代码,我的目标是让它在点击左键时发布文字说“编程很有趣!”当它再次被按下时,它会将该文本更改为“编程很有趣”,我的想法是如果我想要第一个语句则使x = 0,如果我想要第二个语句则x = 1,但它保持说x没有定义,我试过返回x但它根本不会......我尝试了各种不同的方法,但我无法弄明白。思考?我想要另一种方法,因为我不确定我的工作能否。
def text():
pf = Label(window2,text="Programming is fun")
pf.pack()
x = 0
def text2():
fp = Label(window2,text="It is fun to program")
fp.pack()
x = 1
def bt(event):
if x == 0:
text()
elif x == 1:
text2()
window2 = Tk()
window2.geometry("500x500")
答案 0 :(得分:0)
问题在于,在函数范围内,变量x
确实未定义。
一个例子:
height = 5
def some_function():
# code here can not access height just like that
如果要访问函数中的变量,通常有三个选项:
1)将代码放在一个类中。这需要对object oriented programming有所了解,如果您是初学者,这可能不是您的最佳选择
2)将变量作为参数传递给函数,并将其添加到函数的参数列表中,例如:
def my_function(height):
# here height can be used
调用函数时:
height_of_bob = 2
my_function(height_of_bob)
3)使用global variable。这通常不是必需的,一般来说只有considered bad practice,但它可以很好地解决您的问题。
答案 1 :(得分:0)
我找到了一种方法可以在下面执行此操作,低位是它通过该函数创建文本,然后重新绑定键以执行其他功能,然后该功能删除以前的文本,创建新文本,然后重新绑定到上一个函数,循环继续。这是代码。
def text(event):
global pf
fp.pack_forget()
pf = Label(window2,text="Programming is fun")
pf.pack()
window2.bind("<Button-1>", text2)
def text2(event):
global fp
pf.pack_forget()
fp = Label(window2,text="It is fun to program")
fp.pack()
window2.bind("<Button-1>", text)
window2 = Tk()
window2.geometry("500x500")
pf = Label(window2,text="Programming is fun")
fp = Label(window2,text="It is fun to program")
window2.bind("<Button-1>", text)