小编Ske*_*Dan的帖子

为什么PyQt执行我的动作三次?

我对PyQt还是个新手,但我真的不知道为什么会这样.

我有一个我这样创建的主窗口:

class MainWindow(QtGui.QMainWindow):
    #initialize
    def __init__(self):
        #Call parent constructor
        super(MainWindow, self).__init__()

        #Load the interface
        self.ui = uic.loadUi(r"Form Files/rsleditor.ui")

        #Show the ui
        self.ui.show()
Run Code Online (Sandbox Code Playgroud)

当我想用以下方法覆盖close事件时:

def closeEvent(self, event):
    quit_msg = "Are you sure you want to exit the program?"
    reply = QtGui.QMessageBox.question(self, 'Message', 
              quit_msg, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

    if reply == QtGui.QMessageBox.Yes:
        self.saveSettings()
        event.accept()
    else:
        event.ignore()
Run Code Online (Sandbox Code Playgroud)

我读过我必须把uic.loadUI电话换成:

self.ui = uic.loadUi(r"Form Files/rsleditor.ui", self)
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我的所有行为都开始被掀起三次.我很确定我在添加它之前正确设置信号和插槽.有帮助吗?

pyuic文件:

    RSLEditorClass.setIconSize(QtCore.QSize(24, 24))
    self.centralWidget = QtGui.QWidget(RSLEditorClass)
    sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,    QtGui.QSizePolicy.Preferred)
    sizePolicy.setHorizontalStretch(0)
    sizePolicy.setVerticalStretch(0)
    sizePolicy.setHeightForWidth(self.centralWidget.sizePolicy().hasHeightForWidth())
    self.centralWidget.setSizePolicy(sizePolicy)
    self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
    self.vLayMain = QtGui.QVBoxLayout(self.centralWidget) …
Run Code Online (Sandbox Code Playgroud)

python pyqt signals-slots qaction pyuic

6
推荐指数
1
解决办法
743
查看次数

标签 统计

pyqt ×1

python ×1

pyuic ×1

qaction ×1

signals-slots ×1