(Заранее спасибо, если вы решите ответить. Извините, если я не могу четко описать содержание Приложения.)
В настоящее время я делаю Настольное приложение, используя Tkinter Python для моего gui интерфейс. У меня возникла проблема, связанная с потоком приложения.
Мое приложение
На главной странице моего приложения есть форма с несколькими текстовыми полями и флажками. Кнопка проверки работает как True или False Condition, где каждая кнопка проверки указывает, должна ли определенная функция c выполняться или нет. Чтобы сохранить значения кнопки проверки, словарь поддерживается с помощью ключей как LabelName и значений как True / False.
Код флажка
f1=tk.BoolVar() #People tend to use IntVar() but i prefer BoolVar()
ttk.Label(text="func1")
ttk.Checkbutton(parent, variable=f1)
f2=tk.BoolVar()
ttk.Label(text="func2")
ttk.Checkbutton(parent, variable=f2)
-------other such CheckButtons------------------
В форме есть кнопка отправки, при нажатии которой все данные вводятся в текстовое поле вместе с этими кнопками проверки. Основываясь на значениях true-false, вызываются функции, которые обрабатываются условиями if-else.
#submit button
ttk.Button(parent,text="Submit",command=onsubmit)
###########
def onsubmit():
----------statements to read data--------------
dict['func1']=f1
dict['func2']=f2
#other statements
-----------------------------------------------
if dict['func1']:
func1()
if dict['func2']:
func2()
---other if-else conditions---
Каждая функция - это отдельный модуль, который состоит либо из формы, либо из фрейма с графиками данных или matplotlib для визуализации данных. и выполнять другие операции с данными и графиками, которые помещены в root оконную раму.
Моя проблема
Я хочу, чтобы пользователь управлял потоком, давая ему кнопку «Далее» после выполнения каждой функции и затем переход к выполнению следующей функции на основе его ввода кнопки проверки. Программа должна подождать, пока пользователь не нажмет следующую кнопку, и после того, как он нажмет следующую кнопку, она должна выполнить следующую функцию, а затем снова подождать следующую кнопку.
Одно из решений: Использование fig.waitforbuttonpress ( ) было решением. Но я не нашел это надежным. Потому что даже щелчок мыши может пропустить выполнение функции. Но мне нужно специально назначить кнопку, с помощью которой пользователь может выбирать, когда переходить к следующей функции.