Если у вас есть оконный менеджер, который поддерживает модальные окна, вы можете использовать set_modal
в диалоговом окне.
Если нет, вы можете использовать set_sensitive
в родительском окне.Назовите это с False
, когда диалоговое окно показано, и с True
, когда диалоговое окно скрыто или уничтожено.
Я добавил ниже примеры Gtk3.Я рекомендую вам переключиться на PyGObject и Python 3, прежде чем вкладывать слишком много усилий в устаревший инструментарий.
Пример модального окна:
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
window = Gtk.Window(title="Hello World")
window.connect("destroy", Gtk.main_quit)
window.add(Gtk.TextView())
window.show_all()
dialog = Gtk.Window(title="Dialog")
dialog.set_transient_for(window)
dialog.set_modal(True)
dialog.show()
Gtk.main()
Или использовать явное set_sensitive
:
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
window = Gtk.Window(title="Hello World")
window.connect("destroy", Gtk.main_quit)
window.add(Gtk.TextView())
window.show_all()
dialog = Gtk.Window(title="Dialog")
dialog.set_transient_for(window)
window.set_sensitive(False)
def destroy_cb(widget, data):
data.set_sensitive(True)
dialog.connect("destroy", destroy_cb, window)
dialog.show()
Gtk.main()