Найти - Пользователи
Полная версия: Диалоговые окна Tk.
Начало » Python для новичков » Диалоговые окна Tk.
1
Andrey_Golovin
Есть в коде такая функция, при ее вызове то-есть по нажатии кнопки в приложении открывается
диалоговое окно с вопросом.
 def check_quit():
    answer = mb.askyesno(title="Panic at the pizzeria",
                                          message="Вы хотите выйти из игры?")
    if answer == True:
        sys.exit()
Но есть проблема появляется еще одно окно tk.
Как можно от него избавится?
Программа написана на pygame.
Или может подскажете другой вариант диалоговых окон.
PEHDOM
слишком мало данных, что такое mb например? какие окна вообще есть?
сделайте какойто минимальный пример который можно запустить.
Andrey_Golovin
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.
От которого я хочу избавится.
PEHDOM
, ну это все особенности 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()
Andrey_Golovin
PEHDOM
, ну это все особенности tkinter, там должно всегда быть главное(корневое, root) окно, если у вас его нет, tkinter заботливо его создаст для вас(что собственно мы и видим на вашем скриншоте).поэтому если вы всеже хотите использовать ткинтеровский диалог, вам нужно самому создать главное окно, а пото мего спрятать, както так:
Спасибо, за совет.
Тогда ещё такой вопрос, может тогда будет лучше, в pygame создать ещё одно окно с кнопками и использовать его для
Подтверждения выхода?
PEHDOM
Можно и так, смотрите как вам проще. Я просто не знаю насколько сложно в pygame сделать еще одно окно с кнопочками и прочим…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB