单击一次后如何禁用按钮?

时间:2020-07-19 10:16:04

标签: python pysimplegui

我要禁用代码中的“开始更新”按钮

代码:

import PySimpleGUI as sg
import time
mylist = ["Reading files from the internet","downloading new version","writing intents","Training Assistant","Waiting for tensorflow backend","Successfully trained","Completing update","Update successful"]
progressbar = [
    [sg.ProgressBar(len(mylist), orientation='h', size=(51, 10), key='progressbar')]
]
outputwin = [
    [sg.Output(size=(78,20))]
]
layout = [
    [sg.Frame('Progress',layout= progressbar)],
    [sg.Frame('Output', layout = outputwin)],
    [sg.Submit('Start update'),sg.Cancel()]

]
window = sg.Window('Assistant updater', layout)
progress_bar = window['progressbar']
while True:
    event, values = window.read(timeout=10)
    if event == 'Cancel'  or event is None:
        break
    elif event == 'Start update':
        for i,item in enumerate(mylist):
            print(item)
            if item=="Reading files from the internet":
                print('New line started')
            time.sleep(1)
            progress_bar.UpdateBar(i + 1)
        

任何人都可以帮助我,以便我可以在“开始更新”按钮后禁用该按钮,以便将其单击两次

1 个答案:

答案 0 :(得分:2)

单击后必须禁用按钮,直到过程完成。

您可以尝试以下方法:

window['Start update'].update(disabled=True)

处理完成后,您可以启用按钮:

window['Start update'].update(disabled=False)

尝试:

while True:
    event, values = window.read(timeout=10)
    if event == 'Cancel'  or event is None:
        break
    elif event == 'Start update':
        window['Start update'].update(disabled=True)
        for i,item in enumerate(mylist):
            print(item)
            if item=="Reading files from the internet":
                print('New line started')
            time.sleep(1)
            progress_bar.UpdateBar(i + 1)
        window['Start update'].update(disabled=False)
相关问题