Как создать модальное диалоговое окно без значка строки заголовка в PyGTK? - PullRequest
4 голосов
/ 18 марта 2011

Используя PyGTK в Windows, я хочу создать модальное диалоговое окно, в котором нет значка строки заголовка, в соответствии с рекомендациями Microsoft по пользовательскому интерфейсу для диалогов .В руководящих указаниях указано, что в большинстве диалоговых окон не должно быть значков строки заголовка (кроме диалогов, которые реализуют главное окно или служебную программу и отображаются на панели задач).

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

Я думал, что следующий код будет работать:

import gtk

win = gtk.Window()
win.set_icon(None)
win.connect("delete-event",gtk.main_quit)

dia = gtk.Dialog(parent=win, flags=gtk.DIALOG_MODAL)
dia.set_skip_taskbar_hint(True)
dia.set_icon(None)
win.show()
dia.show()

gtk.main()

Диалоговое окно, отображаемое в этом коде, является модальным и не отображается на панели задач.Тем не менее, он все еще имеет значок в строке заголовка, который я не хочу.Я знаю, что Windows способна показывать диалог без значка, потому что большинство сообщений об ошибках в оболочке Windows не имеют их.

Я также протестировал приведенный выше код на GNU / Linux, и он ведет себя так же... модальное диалоговое окно без подсказки на панели задач, но оно все еще имеет значок в строке заголовка.

Я был бы счастлив с хаком в качестве ответа на данный момент, но я намереваюсь подать ошибку для GTK / PyGTK, еслинет чистого способа сделать это.

1 Ответ

3 голосов
/ 23 августа 2011

Попробуйте это

window = gtk.Window()
dialog = gtk.Dialog()

dialog.set_modal(True)
dialog.set_transient_for(window)
dialog.set_decorated(False)

window.show()
dialog.show()

gtk.main()
...