如果在tkinter中单击了statment before按钮,为什么python会执行
当运行时,输出为否,这是为什么?除了创建一个额外的函数,还有什么方法可以绕过它呢。代码是我试图解决的问题的一个例子,而不是实际的代码,因此请尽量不要更改代码,使if语句位于函数Turn()中,因为您做得不对。您正在检查列表框函数的长度,该函数将在程序启动时启动。但要进行检查,您必须将if else置于Turn函数中,当单击按钮时,它将执行Turn命令检查条件是否为true如果在tkinter中单击了statment before按钮,为什么python会执行,python,tkinter,Python,Tkinter,当运行时,输出为否,这是为什么?除了创建一个额外的函数,还有什么方法可以绕过它呢。代码是我试图解决的问题的一个例子,而不是实际的代码,因此请尽量不要更改代码,使if语句位于函数Turn()中,因为您做得不对。您正在检查列表框函数的长度,该函数将在程序启动时启动。但要进行检查,您必须将if else置于Turn函数中,当单击按钮时,它将执行Turn命令检查条件是否为true #Mbox from tkinter import * list2= ['charlie','sam','lolo']
#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()
您可以在自己的函数中运行if语句,并将其添加到lambda调用中 看看下面的例子,如果你有任何问题,请告诉我
def Turn():
list2=['charlie']
if len(list2) == 1:
print('yes')
else:
print('no')
if
语句位于框中,该框将在程序执行后立即运行。按下按钮时发生的事情在Turn
功能中。您的困惑是什么?Box()的执行不会停止等待您单击按钮。我认为你必须重新组织你的代码。这不一定是因为混淆,但我需要找到一种方法,先点击按钮,然后让底部的if语句执行。这不是你想要的方法。稍微想想,如果程序停止等待单击,您根本看不到按钮,因为mainloop()函数永远不会运行。这是一个事件驱动的应用程序,所以你需要在界面上做一些事情来执行if语句并得到你想要的。你真正想要解决的问题是什么。通常,您会尝试使用对象而不是函数来执行类似的操作。想象一个盒子对象,里面有很多按钮。在另一个地方,你可以运行tkinter Main循环。根据OP提供的代码和他们所说的他们正在尝试做的事情,这总是会在lpozo上打印“是”,然后无论你决定如何设置,答案总是“是”。OP很可能只是以turn
为例,但他们的程序中可能有更复杂的代码。也许turn可以切换某些内容,而不仅仅是将列表的长度更改为1。
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()