Как вывести Tkinter Simpledialog на первое место?

Итак, у меня есть 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()

Однако, когда вы запускаете этот код, вы получаете следующее:

Как я могу получить всплывающее окно поверх главного окна?

Что я пробовал:

  • создание виджета TopLevel (но это создает третье пустое окно, которое мне не нужно/не нужно)
  • создание его до/после основного цикла (не умно в ретроспективе)
  • перемещая его вверх и вниз в коде между page=Tk() и page.mailoop (на данный момент просто угадываю)
  • этот другой вопрос тоже, к сожалению, не помог, я пытался реализовать его ответы, но принятый в основном идентичен моему коду

Итак, что я могу сделать (и разумно ли помещать код всплывающего окна в основной LOOP, не будет ли он открываться несколько раз? Пока этого не произошло, но будет ли это?)

Есть ли у точного кода из принятого ответа эта проблема?

MegaIng 20.12.2020 18:32

@MegaIng Теоретически главное окно находится в правом нижнем углу всплывающего окна, но если я уберу root.geometry(...), то да, всплывающее окно будет позади родителя.

Maritn Ge 20.12.2020 18:34

@MegaIng только что был удален принятый ответ на другой вопрос?

Maritn Ge 20.12.2020 18:39

Это просто не приняли.

MegaIng 20.12.2020 18:40

@MegaIng ах, да, это то, что я имел в виду, признание было удалено, плохая формулировка с моей стороны

Maritn Ge 20.12.2020 18:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
524
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это не то, как вы должны использовать 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 инициализирует окно родителя, каким-то образом нарушая порядок. Может быть классифицировано как ошибка, вы можете попытаться создать отчет об ошибке.

поэтому в сборке я вызываю метод, этот метод создает целое число и обрабатывает значение?

Maritn Ge 20.12.2020 18:44

Да, это то, что я имел в виду. Но подача отчета об ошибке, вероятно, тоже неплохая идея.

MegaIng 20.12.2020 18:50

Я никогда не делал этого раньше, где я должен это сделать?

Maritn Ge 20.12.2020 19:19

Другие вопросы по теме