Tkinter сосредоточиться на всплывающем окне - PullRequest
2 голосов
/ 05 ноября 2019

У меня есть вопрос относительно всплывающего окна из главного окна. Как сделать так, чтобы при наличии всплывающего окна (для установки даты и времени) к главному окну нельзя было дотронуться (т.е. закрыть или нажать что-нибудь), пока пользователь не закроет всплывающее окно.

Я пытался использовать grab_set, но главное окно все еще можно закрыть, что приводит к сообщению об ошибке:

bgerror failed to handle background error.

grab_set_global работает для меня, но я не смогу перемещать всплывающее окно вокруг.

# Main window
root = Tk()
root.title("Restaurants")
root.geometry("800x500")

lines of codes..... where user will select if they want to set the date 
and time

# Popup window
def date_time():
    popup = Tk()
    popup.title("Set Date and Time")
    popup.geometry("500x500")
    popup.grab_set()  # Not working

    lines of codes to run

Я хочу, чтобы он сфокусировался на всплывающем окне, и главное окно под ним не сможет закрыться, пока всплывающее окно не будет закрыто / уничтожено.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Хорошо, мне удалось решить мою проблему, изменив popup = Tk() на popup = Toplevel() и popup.grab_set работает во всплывающем окне. К главному окну нельзя прикоснуться, пока всплывающее окно не закроется.

0 голосов
/ 05 ноября 2019

Вы можете использовать popup.focus_force, но, возможно, сначала проверьте, находится ли root в фокусе. Но это похоже на обман.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...