如何将事件连接到函数?

时间:2011-01-29 11:02:51

标签: pyqt

我有这个小媒体应用程序,它有两个按钮,可以启动和停止音乐。但是我的逻辑有些不对劲......请看一下:

class AppWindow(QtGui.QWidget):

    def mediastart():
        os.system("...")

    def mediastop():
        os.system("...")

    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.setGeometry(300, 300, 800, 480)
        self.setWindowTitle("EasySteerQT")

        start = QtGui.QPushButton("Start", self)
        start.setGeometry(50, 50, 60, 35)

        stop = QtGui.QPushButton("Stop", self)
        stop.setGeometry(100, 50, 60, 35)

        quit = QtGui.QPushButton('Close', self)
        quit.setGeometry(10, 10, 60, 35)

        self.connect(quit, QtCore.SIGNAL("clicked()"),
            QtGui.qApp, QtCore.SLOT("quit()"))

        self.connect(start, QtCore.SIGNAL("clicked()"),
            QtGui.qApp, QtCore.SLOT("mediastart()"))

        self.connect(start, QtCore.SIGNAL("clicked()"),
            self, QtCore.SLOT("mediastop()"))

以什么方式将动作连接到此类中的函数?

1 个答案:

答案 0 :(得分:4)

使用self.mediastopQtCore.SLOT('mediastop()')指的是在C ++中定义的(在这种情况下不存在的)槽。不是说那不是真的有必要,你可以使用WidgetClass.slotName - 它只是为你节省转换。

虽然我们处于此状态,但您应该可以从old-style signals/slots切换到new-style signals/slots。例如。 self.clicked.connect(self.mediastop)