Способ, которым я делаю это, - создать функцию, которая создаст окно, если оно не существует, а затем отобразит окно. Лично я не думаю, что нужно зажечь окно, но вы можете сделать это, если хотите. Tkinter не знает, как замаскировать окно, но вы можете сделать что-то простое, как короткое изменение цвета.
Вот пример:
import Tkinter as tk
class Example(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.instruction_window = None
self.instructions = tk.Button(self, text="Instructions", foreground="green",
command=self.show_instructions)
self.instructions.pack(side="left")
def show_instructions(self):
'''show the instruction window; create it if it doesn't exist'''
if self.instruction_window is None or not self.instruction_window.winfo_exists():
self.instruction_window = InstructionWindow(self)
else:
self.instruction_window.flash()
class InstructionWindow(tk.Toplevel):
'''A simple instruction window'''
def __init__(self, parent):
tk.Toplevel.__init__(self, parent)
self.text = tk.Text(self, width=40, height=8)
self.text.pack(side="top", fill="both", expand=True)
self.text.insert("end", "these are the instructions")
def flash(self):
'''make the window visible, and make it flash temporarily'''
# make sure the window is visible, in case it got hidden
self.lift()
self.deiconify()
# blink the colors
self.after(100, lambda: self.text.configure(bg="black", fg="white"))
self.after(500, lambda: self.text.configure(bg="white", fg="black"))
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(side="top", fill="both", expand=True)
root.mainloop()
, когда вы говорите «окно инструкции» вы говорите о всплывающем окне, или области в текущем окне, которое отображает текст? –
Да, новое всплывающее окно. Кроме того, далее в программу мне нужно будет сделать это для окна для каждого вопроса, а также кнопки «да/нет/вводить» в каждом вопросе, чтобы гарантировать, что функция вызывается только один раз, а не 1 миллион раз - какие-либо предложения? Благодаря – user3056786