Итак, у меня есть Tk и Simpledialog, я скопировал свой код, разделил его, чтобы получить минимальный воспроизводимый образец исполняемого кода.
from tkinter import *
from tkinter import simpledialog
#page setup
page = Tk()
page.title("freechat")
#info popup
port = simpledialog.askinteger("Enter Port:", f"Please enter the port to the server",
parent=page, minvalue=10000, maxvalue=60000,)
page.mainloop()
Однако, когда вы запускаете этот код, вы получаете следующее:
Как я могу получить всплывающее окно поверх главного окна?
Что я пробовал:
page=Tk()
и page.mailoop
(на данный момент просто угадываю)Итак, что я могу сделать (и разумно ли помещать код всплывающего окна в основной LOOP, не будет ли он открываться несколько раз? Пока этого не произошло, но будет ли это?)
@MegaIng Теоретически главное окно находится в правом нижнем углу всплывающего окна, но если я уберу root.geometry(...)
, то да, всплывающее окно будет позади родителя.
@MegaIng только что был удален принятый ответ на другой вопрос?
Это просто не приняли.
@MegaIng ах, да, это то, что я имел в виду, признание было удалено, плохая формулировка с моей стороны
Это не то, как вы должны использовать askinteger
. Если вы используете askinteger
из обратного вызова, например. во время mainloop
правильно сверху:
page.after(50, lambda :simpledialog.askinteger("Enter Port:", f"Please enter the port to the server",
parent=page, minvalue=10000, maxvalue=60000, ))
page.mainloop()
(Конечно, вам все равно нужно правильно использовать значение.)
Основная проблема, по-видимому, заключается в том, что askinteger
инициализирует окно родителя, каким-то образом нарушая порядок. Может быть классифицировано как ошибка, вы можете попытаться создать отчет об ошибке.
поэтому в сборке я вызываю метод, этот метод создает целое число и обрабатывает значение?
Да, это то, что я имел в виду. Но подача отчета об ошибке, вероятно, тоже неплохая идея.
Я никогда не делал этого раньше, где я должен это сделать?
Есть ли у точного кода из принятого ответа эта проблема?