Неблокирующее всплывающее сообщение tkinter
Я создаю управляющее приложение, которое блокирует использование компьютера пользователем до тех пор, пока оператор не разблокирует его.
Во время блокировки оператор может отправлять сообщения на компьютер пользователя, и эти сообщения показываются пользователю посредством всплывающих сообщений.
Проблемный случай:
Если оператор отправляет два или более сообщений, отображается только первое сообщение, потому что я использую tkMessageBox.showinfo()
и он блокируется, пока пользователь не нажмет кнопку ОК.
Теперь вы, вероятно, спрашиваете, почему я не создаю свой собственный класс окна сообщений и не показываю его несколько раз без блокировки? На самом деле я не могу сделать это, потому что приложение имеет focus forcing
,
Это конструктор приложения и focus forcing
метод:
def __init__(self):
self.root_window = Tkinter.Tk()
self.main_frame = Tkinter.Frame(self.root_window)
self.root_window.update_idletasks()
height = self.root_window.winfo_screenheight()
width = self.root_window.winfo_screenwidth()
x = self.root_window.winfo_screenwidth() / 2 - width / 2
y = self.root_window.winfo_screenheight() / 2 - height / 2
self.root_window.geometry('{}x{}+{}+{}'.format(width, height, x, y))
# focus forcing
self.root_window.bind("<FocusOut>", self.app_lost_focus)
def app_lost_focus(self, event):
self.root_window.focus_set()
self.root_window.after(1, lambda: self.root_window.focus_force())
Теперь, если вы знаете какую-либо другую альтернативу всплывающему сообщению, которая не имеет блокировки и может появляться несколько раз [и увидела хотя focus forcing
] Я буду рад услышать об этом.