Eternity_18 2023-08-23 22:40 采纳率: 20%
浏览 17

pyqt6槽函数连接

请帮我看看下面主程序代码哪里有问题,运行没有报错但是槽函数连接不成功,点击按钮没有反映


from main import Ui_MMainWindow
from PyQt6 import QtCore, QtGui, QtWidgets
import sys
from PyQt6.QtWidgets import QApplication, QFrame, QPushButton, QMainWindow

class MMainWindow(Ui_MMainWindow, QMainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        # 设置信号与槽
        # 点击按钮切换界面,三个按钮对应三个界面
        self.pushButton_zhuye.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(2))
        self.pushButton_meiyan.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(0))
        self.pushButton_koutu.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(1))
        # 初始化运行的第一个界面
        self.stackedWidget.setCurrentIndex(2)
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    myw = QMainWindow()
    myWin = Ui_MMainWindow().setupUi(myw)
    myw.show()
    sys.exit(app.exec())
  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-24 08:52
    关注

    【以下回答由 GPT 生成】

    这段代码存在以下问题:

    1. 创建了两个窗口实例,myw = QMainWindow()myWin = Ui_MMainWindow().setupUi(myw),但只有myw被显示出来了。
    2. 槽函数的连接方式不正确,导致按钮点击没有反应。

    为了解决这些问题,可以采取以下步骤:

    1. 删除myWin = Ui_MMainWindow().setupUi(myw)这行代码。
    2. 修改myw的实例化为myw = MMainWindow(),将自定义的MMainWindow类作为窗口实例。
    3. 移除self.show()方法的调用,因为已经在myw.show()中显示窗口了。

    修改后的代码如下所示:

    from main import Ui_MMainWindow
    from PyQt6 import QtCore, QtGui, QtWidgets
    import sys
    from PyQt6.QtWidgets import QApplication, QFrame, QPushButton, QMainWindow
    
    class MMainWindow(Ui_MMainWindow, QMainWindow):
        def __init__(self):
            super().__init__()
            self.setupUi(self)
    
            # 设置信号与槽
            # 点击按钮切换界面,三个按钮对应三个界面
            self.pushButton_zhuye.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(2))
            self.pushButton_meiyan.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(0))
            self.pushButton_koutu.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(1))
            # 初始化运行的第一个界面
            self.stackedWidget.setCurrentIndex(2)
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        myw = MMainWindow()
        myw.show()
        sys.exit(app.exec())
    

    通过以上修改,槽函数应该能够成功连接并响应按钮点击事件了。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 8月23日