【问题标题】:How to make the window behind a dialog not clickable?如何使对话框后面的窗口不可点击?
【发布时间】:2019-06-26 20:27:52
【问题描述】:

我想设置阻止对话框后面的窗口,以防止用户在对话框运行时单击或修改窗口的任何内容,并且当用户关闭对话框然后设置解锁对话框后面的窗口。

import gtk;
window = gtk.Window();
window.set_title("Window Behind Dialog");
window.set_default_size(426,240);
textentry = gtk.TextView();
window.add(textentry);
window.show_all();
dialog = gtk.Window();
dialog.set_title("Dialog");
dialog.set_default_size(256,144);
label = gtk.Label("Unlock the window behind when this dialog get close");
dialog.add(label);
dialog.show_all();
gtk.main();

使用哪种方法,在Gtk还是PyGtk?例如:

window.set_disabled_to_all_events();

window.set_disabled();

window.events_disabled(True);

window.set_blocked(True);

【问题讨论】:

  • 仅供参考:这是 Python,您不需要 用分号终止语句。
  • PyGTK 是 GTK+ 2 的旧静态 python 绑定的名称。两者都已被弃用多年。不要浪费时间学习遗留的东西,并使用 pygobject 切换到 GTK+ 3 动态绑定。请阅读本教程:python-gtk-3-tutorial.readthedocs.io/en/latest

标签: python gtk pygtk


【解决方案1】:

如果你有一个支持模式窗口的窗口管理器,你可以在对话窗口上使用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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    相关资源
    最近更新 更多