在函数期间更新tkinter-texvariable标签

2024-06-26 13:47:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试做一个程序,控制一个亮度测试机。 我在用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)

Tags: 函数testdatalenifresponsefnhas
1条回答
网友
1楼 · 发布于 2024-06-26 13:47:07

好吧,经过长时间的代码尝试,我终于得到了有效的代码。 我在函数启动之前设置一个全局值,并在每次测试完成后修改它。在这之后,我回忆起这个函数,它开始第二次测试,因为我设置的全局值已经改变了。 这是我使用的代码。 谢谢你的帮助。在

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()

相关问题 更多 >