Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 11, 2019 20:58:04

Andrey_Golovin
Зарегистрирован: 2018-01-27
Сообщения: 35
Репутация: +  1  -
Профиль   Отправить e-mail  

Диалоговые окна Tk.

Есть в коде такая функция, при ее вызове то-есть по нажатии кнопки в приложении открывается
диалоговое окно с вопросом.

 def check_quit():
    answer = mb.askyesno(title="Panic at the pizzeria",
                                          message="Вы хотите выйти из игры?")
    if answer == True:
        sys.exit()
Но есть проблема появляется еще одно окно tk.
Как можно от него избавится?
Программа написана на pygame.
Или может подскажете другой вариант диалоговых окон.

Прикреплённый файлы:
attachment Снимок экрана от 2019-02-11 21-47-15.png (357,7 KБ)

Офлайн

#2 Фев. 12, 2019 11:31:29

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Диалоговые окна Tk.

слишком мало данных, что такое mb например? какие окна вообще есть?
сделайте какойто минимальный пример который можно запустить.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Фев. 12, 2019 14:24:56

Andrey_Golovin
Зарегистрирован: 2018-01-27
Сообщения: 35
Репутация: +  1  -
Профиль   Отправить e-mail  

Диалоговые окна Tk.

PEHDOM
слишком мало данных, что такое mb например? какие окна вообще есть?сделайте какойто минимальный пример который можно запустить.
 import sys
import pygame
from tkinter import messagebox as mb
# Инициализация экрана и создание игры.
def rungame():
    pygame.init()
    screen_game = pygame.display.set_mode((800, 600))
    pygame.display.set_caption("Panic at the pizzeria")
    # Подтверждение выхода.
    def check_quit():
        answer = mb.askyesno(title="Panic at the pizzeria",
                                     message="Вы хотите выйти из игры?")
        if answer == True:
            sys.exit()
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                check_quit()
                
rungame()
Вот минимальный запускаемый код. По нажатию на крестик появляется диалоговое окно. И еще одно окно tk.
От которого я хочу избавится.

Офлайн

#4 Фев. 12, 2019 14:49:01

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Диалоговые окна Tk.

, ну это все особенности tkinter, там должно всегда быть главное(корневое, root) окно, если у вас его нет, tkinter заботливо его создаст для вас(что собственно мы и видим на вашем скриншоте).
поэтому если вы всеже хотите использовать ткинтеровский диалог, вам нужно самому создать главное окно, а пото мего спрятать, както так:

 import sys
import pygame
from tkinter import messagebox as mb
from tkinter import Tk
# Инициализация экрана и создание игры.
def rungame():
    pygame.init()
    screen_game = pygame.display.set_mode((800, 600))
    pygame.display.set_caption("Panic at the pizzeria")
    # Подтверждение выхода.
    def check_quit():
        root = Tk()  # Создаем главное окно
        root.withdraw() # скрываем его
        answer = mb.askyesno(title="Panic at the pizzeria",
                                     message="Вы хотите выйти из игры?")
        if answer == True:
            pygame.quit()
            sys.exit()
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                check_quit()
                
rungame()



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 12, 2019 14:49:25)

Офлайн

#5 Фев. 12, 2019 15:02:40

Andrey_Golovin
Зарегистрирован: 2018-01-27
Сообщения: 35
Репутация: +  1  -
Профиль   Отправить e-mail  

Диалоговые окна Tk.

PEHDOM
, ну это все особенности tkinter, там должно всегда быть главное(корневое, root) окно, если у вас его нет, tkinter заботливо его создаст для вас(что собственно мы и видим на вашем скриншоте).поэтому если вы всеже хотите использовать ткинтеровский диалог, вам нужно самому создать главное окно, а пото мего спрятать, както так:
Спасибо, за совет.
Тогда ещё такой вопрос, может тогда будет лучше, в pygame создать ещё одно окно с кнопками и использовать его для
Подтверждения выхода?

Офлайн

#6 Фев. 12, 2019 16:52:43

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Диалоговые окна Tk.

Можно и так, смотрите как вам проще. Я просто не знаю насколько сложно в pygame сделать еще одно окно с кнопочками и прочим…



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version