请帮我看看下面主程序代码哪里有问题,运行没有报错但是槽函数连接不成功,点击按钮没有反映
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 生成】
这段代码存在以下问题:
myw = QMainWindow()
和myWin = Ui_MMainWindow().setupUi(myw)
,但只有myw
被显示出来了。为了解决这些问题,可以采取以下步骤:
myWin = Ui_MMainWindow().setupUi(myw)
这行代码。myw
的实例化为myw = MMainWindow()
,将自定义的MMainWindow
类作为窗口实例。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是没有走到的。