Представление экземпляров tk с помощью Tk.mainloop()
Я программирую симулятор yahtzee (для обучения) и хотел бы, чтобы несколько экранов (экземпляров tkinter) работали одновременно, но я не хочу, чтобы они запускались одновременно, и я не могу понять, почему они начинаются в в то же время.
Я ничего не пробовал, кроме поиска в Google, я новичок в программировании на tkinter...
from tkinter import *
Screen1 = Tk()
screen2 = Tk()
Screen1.mainloop()
Я ожидал, что будет показан только screen1, но они оба показываются, любая помощь?
1 ответ
Вы явно создаете два окна, поэтому появляются два окна.
Вы никогда не должны создавать более одного экземпляра Tk
, Если вам нужно несколько окон, второе и последующие окна должны быть экземплярами Toplevel
, Вам нужно только позвонить mainloop
однажды - это не то, что создает окна, это просто механизм, с помощью которого окна могут реагировать на события. Один звонок mainloop
это все, что вам нужно, независимо от того, сколько у вас окон.
Причина этого основана на том, как реализован tkinter - tkinter - это тонкая оболочка для встроенного интерпретатора tcl (совершенно другой среды языка программирования), и каждый экземпляр получает свой собственный интерпретатор. Это означает, что все виджеты и переменные tkinter (StringVar
и т. д.) в одном случае они невидимы и недоступны для любого другого экземпляра.
Если вы хотите создать дополнительные окна, но изначально они скрыты, вы можете вызвать withdraw
метод в любом окне, которое вы хотите скрыть.