pyqt信号问题

1 投票
2 回答
808 浏览
提问于 2025-04-15 20:05

我正在为Avogadro(一个化学软件)开发一个插件,使用的是pyqt。现在我遇到了一些问题,就是怎么把一个方法连接到按钮被点击时的信号上。

我有了我的类:

class Controller(object):
    def __init__(self):
        self.ui = MyDialog() # self.ui.run is a QPushButton
        self.ui.run.clicked.connect(self.on_run_click)
    def on_run_click(self):
        1/0

class MyDialog(QDialog,Ui_Dialog): # ui designer compiled
      def __init__(self):
         QDialog.__init__(self)
         self.setupUi(self)

为什么当我点击按钮时,on_run_click这个方法没有被调用呢?

2 个回答

1

除非他们最近做了很大的改动,不然这看起来不是在PyQt中连接信号的正确方法。我更习惯于这样:

self.connect(self.ui.run, QtCore.SIGNAL("clicked()"),
             self, QtCore.SLOT("on_run_click()"))
1

问题在于,Avogadro的Python封装不支持Tim博客文章中提到的新信号语法:http://timvdm.blogspot.com/2008/12/avogadro-gets-new-python-wrappers.html

撰写回答