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

【以下回答由 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())

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



【相关推荐】



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

你实例化的对象不对。
信号槽的配置是在MMainWindow类的初始化函数__init__内,实例化的是它的父类QMainWindow,所以信号槽相关的code是没有走到的。