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

2024-05-11 03:22:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力学习如何使用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_())

Tags: fromimportselfuiinitdefsys按钮
2条回答

以下是您的脚本的重新编写,它将修复所有问题:

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_())

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

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

然后连接:

self.nouveauRuban.clicked.connect(nvRuban)

相关问题 更多 >