我正在使用Glade和Python 3开发GUI应用程序。我在Glade中设计了UI;它包含一个主应用程序窗口和一个自定义对话框,其中包含用户单击指定按钮时显示的某些信息。对话框有自己的类,我们称之为InfoDialog
;它的构造函数处理创建对话框窗口并显示它。该类还具有与对话框中的小部件发送的信号相对应的方法;例如,有一个“取消”按钮,信号(和类中的处理程序方法)被称为on_cancelButton_clicked
。
问题是我想在InfoDialog
的构造函数中基于每个实例连接此信号,并将self
指定为用户数据,以便InfoDialog.on_cancelButton_clicked
收到所有参数可以对InfoDialog
的实例采取行动。问题是,当我创建主窗口后连接信号时,Gtk.builder
希望我在那里提供所有信号处理程序,不仅是主窗口,还有InfoDialog
和它的子节点 - 通常用于UI .xml文件中定义的每个单个信号。
除了为每个孩子手动调用widget.connect()
之外,我该怎么做才能解决这个问题?
答案 0 :(得分:2)
通常的方法是将不同窗口/对话框的UI定义拆分为单独的XML文件。
如果您不想这样做,可以使用Gtk.Builder.connect_signals_full()
,并传递仅连接您要连接的信号的自定义function。