pyqt信号问题
我正在为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