Найти - Пользователи
Полная версия: Tkinter: common-диалоги
Начало » GUI » Tkinter: common-диалоги
1
The gray Cardinal
Кто-нибудь использует сабж? Столкнулся с примером, который меня неприятно удивил:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import *
from tkMessageBox import *

def b():
if askyesno(u'Вопрос', u'Нажмите "Да" или "Нет".'):
showwarning(u'Сообщение', u'Вы нажали "Да."')
else:
showwarning(u'Сообщение', u'Вы нажали "Нет."')

root = Tk()
Button(root, text = u'Нажми меня', command = b).pack()
root.mainloop()
1. В книге Марка Лутца “Программирование на Python” (оргинал - O'REILLY) написано, что “все стандартные диалоги являются модальными”. Однако получается, что это полуправда. В приведённом примере вы можете переключиться в главное окно и закрыть его крестиком. В результате на консоль выпадет порция ругани “TclError: can't invoke ”grab“ command: application has been destroyed”.
2. Диалоги askyesno и showwarning позволяют изменять размер своих окон, что имхо, крайне некрасиво.

Я что-то не понимаю, или Tkinter реально так отстойна? Если первое, то что именно?
igor.kaist
Это под линуксом так? Под виндой все нормально..
The gray Cardinal
igor.kaist
Это под линуксом так? Под виндой все нормально..
Да, под GNOME так.
gmorgunov
Привет
Проверил под KDE.
В результате на консоль выпадет порция ругани “TclError: can't invoke ”grab“ command: application has been destroyed”.
При закрытии главного окна(<нажми меня>)/ при открытом <нажмите да или нет>/ - приложение виснет. Не помогает и Ctrl+c, только закрытие консоли.
Получается это не полуправда, а неправда Лутца( под Linux).
Такое приложение заказчик не примет.(имхо)

с уважением gmorgunov
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