У меня есть графический интерфейс класса, где я настраиваю все свои виджеты и т. д. для своего графического интерфейса. Я использую многопоточность, чтобы запустить процесс из другого класса. Это работает нормально, пока этот другой процесс просто выполняется. В некоторых случаях мне нужно дождаться ввода данных пользователем. Я использовал для этого tkmessagebox, но окно сообщений не появляется и блокирует графический интерфейс без каких-либо сообщений об ошибках. (Работает, когда не запускается через GUI).
Вот часть моего кода:
часть графического интерфейса
from Tkinter import *
import Tkinter as ttk
import ttk
from tkMessageBox import *
from GUI_reader import Commandline_Reader
import threading
import Queue
class GUI:
def __init__(self,master):
self.master = master
self.argString='ds'
## self.workerThread()
button = ttk.Button(text='start', command=self.go).grid()
...
def go(self):
self.thread = threading.Thread(target=self.workerThread)
self.thread.daemon = True
self.thread.start()
...
def workerThread(self):
...
reader = Commandline_Reader(master, self.argString)
if reader.connect():
print 'success'
reader.run()
print 'success'
if __name__ == '__main__':
root = Tk()
client = GUI(root)
root.mainloop()
класс commandline_reader:
import tkMessageBox
...
class Commandline_Reader:
def __init__(self, master, argString='')
self.master = master
...
def connect(self)
...
def run(self):
...
tkMessageBox.askokcancel('Calibration', 'Hit ok to start calibration', parent= self.master)
...
if __name__ == '__main__':
reader = Commandline_Reader(self,master)
if not reader.connect():
exit(-1)
if not reader.run():
exit(-2)
run()
- person Alok   schedule 25.03.2014self.master
? просто напечатайте любую строку, например привет, успех или что-то в этом роде - person Alok   schedule 25.03.2014from Tkinter import Tk
иimport ttk
. я думаю, что это должно работать нормально - person Alok   schedule 25.03.2014