Python(替代两条消息)

时间:2017-11-04 23:34:04

标签: python

我有一些代码,我的目标是让它在点击左键时发布文字说“编程很有趣!”当它再次被按下时,它会将该文本更改为“编程很有趣”,我的想法是如果我想要第一个语句则使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")

2 个答案:

答案 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)