创建主脚本以将PyQt4窗口与其他对象一起使用

时间:2016-11-17 19:22:10

标签: python inheritance pyqt4

我正在尝试学习如何使用python和pyQt。 我用Qtcreator做了一个窗口然后我用pyuic4,我还创建了一个名为Ruban的类我想用它与我的窗口界面。在我的窗口中,我有一个名为nouveauRuban的按钮。我想在点击此按钮时从我的班级Ruban创建一个对象。

我知道我的代码错了,问题可能出在mainTN的最初部分,__init__

# -*- coding: utf-8 -*-

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from mainwindow import Ui_MainWindow
from Ruban import Ruban

class mainTM(QMainWindow, Ui_MainWindow): 
    def __init__(self, parent=None): #, parent=None ??
        super (mainTM, self).__init__(self, parent) #(parent) ??
        self.createWidgets()
        self.nouveauRuban.connect(nouveauRuban, QtCore.SIGNAL(_fromUtf8("clicked()")), self.nvRuban)

    def nvRuban(self):
        self.ruban=Ruban()
        self.ruban.info_ruban()

    def createWidgets(self):
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)


if __name__== "__main__":
    app=QApplication(sys.argv)
    myapp=mainTM()
    myapp.show()
    sys.exit(app.exec_())

2 个答案:

答案 0 :(得分:1)

如果您要将信号连接到插槽,则需要使用装饰器定义该插槽:

@QtCore.pyqtSlot()
def nvRuban(self):
    self.ruban=Ruban()
    self.ruban.info_ruban()

然后连接它:

self.nouveauRuban.clicked.connect(nvRuban)

答案 1 :(得分:1)

以下是您的脚本的重写,它应该解决所有问题:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from mainwindow import Ui_MainWindow
from Ruban import Ruban

class mainTM(QMainWindow, Ui_MainWindow): 
    def __init__(self, parent=None):
        super(mainTM, self).__init__(parent)
        self.setupUi(self)
        self.nouveauRuban.clicked.connect(self.nvRuban)

    def nvRuban(self):
        self.ruban = Ruban()
        self.ruban.info_ruban()

if __name__== '__main__':

    app = QApplication(sys.argv)
    myapp = mainTM()
    myapp.show()
    sys.exit(app.exec_())