如果在tkinter中单击按钮前的陈述,python为什么执行

时间:2018-06-19 13:26:13

标签: python tkinter

#Mbox
from tkinter import *

list2= ['charlie','sam','lolo']

def Turn():
   list2=['charlie']     


def Box():
    global list2
    popup = Tk()
    label = Label(popup,text='jack').pack()
    button = Button(popup,text='lew',command=lambda: Turn()).pack()

    if len(list2) == 1:
        print('yes')
    else:
        print('no')

    popup.mainloop()

Box()

当Ran输出为no时,为什么呢?除了创建额外的功能之外,还有什么方法可以解决它。该代码是我要解决的问题的一个示例,不是我要解决的实际代码,因此请不要更改代码,以使if语句位于函数Turn()

中。

2 个答案:

答案 0 :(得分:0)

您做错了。您正在检查Box功能中列表的长度,该功能将在程序启动时启动。但是要进行检查,必须在“转向”功能中放置其他内容,然后单击按钮时,它将执行turn命令,以检查条件是否为真

def Turn():
    list2=['charlie']     

    if len(list2) == 1:
       print('yes')
    else:
       print('no')

答案 1 :(得分:0)

您可以在自己的函数中运行if语句,然后将其添加到lambda调用中。

看看下面的例子,如果您有任何疑问,请告诉我。

from tkinter import *

list2 = ['charlie', 'sam', 'lolo']

def Turn():
    global list2
    list2 = ['charlie']

def run_if_statment():
    global list2
    if len(list2) == 1:
        print('yes')
    else:
        print('no')   

def Box():
    global list2
    popup = Tk()
    Label(popup, text='jack').pack()
    Button(popup, text='lew', command=lambda:(Turn(), run_if_statment())).pack()
    popup.mainloop()

Box()