【问题标题】:How to recieve events from Main window when modal dialog has been put up in Python Gtk在 Python Gtk 中放置模态对话框时如何从主窗口接收事件
【发布时间】:2012-05-05 12:00:26
【问题描述】:

我有客户端服务器程序。我的 python 总是监听套接字中传递的数据。如果我从服务器获得某些预定义的字符串,我会显示一个模式对话框。对话框可以通过两种方式关闭。第一种方法是用户应该对对话框按钮做出反应。第二种方法是,从套接字我必须再接收一个关闭命令。现在我面临的问题是当对话框可见时,套接字没有收到任何字符串。只有当我关闭对话框时,客户端发送的字符串才会从套接字接收。当对话框存在时,我如何从客户端异步接收消息。如果可能的话,我如何以编程方式关闭对话框。

【问题讨论】:

  • 您的两个问题都与模式对话框的使用有关。您最好创建一个仅设置“stay-on-top”属性的常规对话框(不是模态对话框)。我认为,在该窗口上,您将能够修改消息,甚至可以从其他进程中关闭它。
  • 嗨,路易斯,我尝试过非模态,但按钮不发送响应信号

标签: pygtk modal-dialog


【解决方案1】:

您的两个问题都与模式对话框的使用有关。您最好创建一个仅设置“stay-on-top”属性的常规对话框(不是模态对话框)。在该窗口中,您将能够修改消息,甚至可以从其他进程中将其关闭。

您必须将“响应”(或其他方法名称,如果需要)添加到按钮:

    self.stayOnTopWindowResponse = None

    b = gtk.Button("Accept")
    b.response = "Accept"
    b.connect("clicked", self.accepted)

在“已接受”例程(所有按钮一个)中是这样的:

def accepted(self, widget):
    self.stayOnTopWindowResponse = widget.response
    self.stayOnTopWindow.close()

我没有对此进行测试,但它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2019-01-01
    • 1970-01-01
    相关资源
    最近更新 更多