Babay
Мне нужно каким-то образом в функции Do приостанавливать ее исполнение до очередного щелчка по списку
мне кажеться вам стоит пересмотреть алгоритм работы вашей программы.. потому как так как вы хотите сделать у вас не получиться. input ждет ввода, а листбокс ничего не ждет.
Я бы например создал цепочки вопросов ответов и уже из них вычитывал.
# -*- coding: utf-8 -*-
from tkinter import *
class main:
def __init__(self,master):
self.master = root
self.master.fromtask = False
# self.master.fromtask принимает значение True во время выполнения функции Do
self.quest = Label(self.master)
self.butt = Button(self.master,text='Do',command=self.do)
self.varList = Listbox(self.master)
self.quest.pack()
self.varList.pack()
self.butt.pack()
self.varList.bind('<Double-1>',self.lbmouse)
# словарь с цепочкой вопросов-ответов
self.questions = {'Вопрос №1': ['Ответ 1-1', 'Ответ 1-2'],
'Ответ 1-1': ['Ответ 1-1-1', 'Ответ 1-1-2'],
'Ответ 1-2': ['Ответ 1-2-1', 'Ответ 1-2-2'],
}
# расшифровка вопросов
self.questionsList = {'Вопрос №1': 'Вопрос №1',
'Ответ 1-1': 'тогда Вопрос№ 1-1',
'Ответ 1-2': 'тогда Вопрос№ 1-2',
}
self.master.mainloop()
def varListClear(self):
# для периодической очистки списка вариантов
self.varList.delete(0,END)
def lbmouse (self,event):
if self.master.fromtask:
#Двойной щелчок если ф-ция запущена, иначе фигвам
print ('Функция Do выполняется')
nextQuestion = self.getAnswer()
self.setQuestion(nextQuestion)
def setQuestion(self, question): # Вывести текущий вопрос, и варианты ответа
if question in self.questions.keys(): # проверяем есть ли вопрос в списке вопросов, если нет тетс окончен
self.quest['text'] = self.questionsList[question]
self.varListClear()
answers = self.questions[question]
for a in answers:
self.varList.insert (END,a)
else:
self.quest['text'] = question
self.master.fromtask = False
def getAnswer(self): #получить ответ,
sel = self.varList.curselection()
answer = self.varList.get(sel[0])
return(answer)
def do (self):
self.master.fromtask = True
self.setQuestion('Вопрос №1')
root=Tk()
main(root)
это очень приминивный пример , показывающий алгоритм, возможно вам стоит использовать таблицы или СУБД для хранения данных вместо словарей.