在函数期间更新 tkinter texvariable 标签
Update a tkinter texvariable label during a function
我正在尝试制作一个控制发光测试机的程序。
我正在使用 tkinter
对 GUI 进行编程,并且我制作了一个按钮来启动在机器上进行测试的功能。
该函数在机器上启动 3 种不同的测试,并且在 GUI 中有一个框 (ttk.Label(root, textvariable=x)
) 必须分别更新三个过程的结果。
当我按下按钮时,三个测试正确开始,当函数结束时,文本正确更新。但我想在函数运行期间更新它,以显示每次测试的结果,直到函数结束。
我一直在寻找和尝试,但我无法在函数运行期间而不是在函数结束时更新文本。
有人可以帮我吗?
这是我使用的函数的代码:
def inittest():
if fn.initground()=='Y':
progtext = ('Ground test has started')
progress.set(progtext)
elif fn.initground()=='N'
progtext = ('Ground test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
if fn.initisolate()=='Y':
progtext = ('Isolate test has started')
progress.set(progtext)
elif fn.initisolate()=='N'
progtext = ('Isolate test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
if fn.initfun()=='Y':
progtext = ('Function test has started')
progress.set(progtext)
elif fn.initfun()=='N'
progtext = ('Function test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
好的,经过长时间的代码尝试,我终于得到了有效的代码。
我在函数启动之前设置了一个全局值,并在每次测试完成后修改它。在此之后,我回忆起这个函数,它开始了第二次测试,因为我设置的全局值已经改变了。
这是我使用的代码。
感谢大家的帮助。
global action
action = 1
def inittest():
global action
if action == 1:
def testground():
global progtext
if fn.initground()=='Y':
progtext = ('Ground test has started')
progress.set(progtext)
elif fn.initground()=='N'
progtext = ('Ground test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
action = 2
testground()
root.after(1000, inittest)
if action == 2:
def testisolate():
global progtext
if initisolate()=='Y':
progtext = (progtext + 'Isolate test has started')
progress.set(progtext)
elif fn.initisolate()=='N'
progtext = (progtext + 'Isolate test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
action = 3
testisolate()
root.after(1000, inittest)
if action == 3:
def testfun():
global progtext
if initfun()=='Y':
progtext = (progtext + 'Function test has started')
progress.set(progtext)
elif fn.initfun()=='N'
progtext = (progtext + 'Function test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
action = 1
testfun()
我正在尝试制作一个控制发光测试机的程序。
我正在使用 tkinter
对 GUI 进行编程,并且我制作了一个按钮来启动在机器上进行测试的功能。
该函数在机器上启动 3 种不同的测试,并且在 GUI 中有一个框 (ttk.Label(root, textvariable=x)
) 必须分别更新三个过程的结果。
当我按下按钮时,三个测试正确开始,当函数结束时,文本正确更新。但我想在函数运行期间更新它,以显示每次测试的结果,直到函数结束。
我一直在寻找和尝试,但我无法在函数运行期间而不是在函数结束时更新文本。
有人可以帮我吗?
这是我使用的函数的代码:
def inittest():
if fn.initground()=='Y':
progtext = ('Ground test has started')
progress.set(progtext)
elif fn.initground()=='N'
progtext = ('Ground test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
if fn.initisolate()=='Y':
progtext = ('Isolate test has started')
progress.set(progtext)
elif fn.initisolate()=='N'
progtext = ('Isolate test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
if fn.initfun()=='Y':
progtext = ('Function test has started')
progress.set(progtext)
elif fn.initfun()=='N'
progtext = ('Function test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
好的,经过长时间的代码尝试,我终于得到了有效的代码。 我在函数启动之前设置了一个全局值,并在每次测试完成后修改它。在此之后,我回忆起这个函数,它开始了第二次测试,因为我设置的全局值已经改变了。 这是我使用的代码。 感谢大家的帮助。
global action
action = 1
def inittest():
global action
if action == 1:
def testground():
global progtext
if fn.initground()=='Y':
progtext = ('Ground test has started')
progress.set(progtext)
elif fn.initground()=='N'
progtext = ('Ground test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
action = 2
testground()
root.after(1000, inittest)
if action == 2:
def testisolate():
global progtext
if initisolate()=='Y':
progtext = (progtext + 'Isolate test has started')
progress.set(progtext)
elif fn.initisolate()=='N'
progtext = (progtext + 'Isolate test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
action = 3
testisolate()
root.after(1000, inittest)
if action == 3:
def testfun():
global progtext
if initfun()=='Y':
progtext = (progtext + 'Function test has started')
progress.set(progtext)
elif fn.initfun()=='N'
progtext = (progtext + 'Function test has failed')
progress.set(progtext)
response = fn.receivedata()
if len(response) == 1:
progtext = (progtext + 'Data not received')
progress.set(progtext)
else:
progtext = (progtext + response)
progress.set(progtext)
time.sleep(2)
action = 1
testfun()