我想通过按按钮来更改页面。 我创建了这样的代码,当我按下按钮时它什么也没做。 代码正常运行,没有错误,我可以看到主窗口。但是该按钮不起作用。 我打印了一条消息以验证其操作,但是根本没有出现。 有办法解决这个问题吗?
我的代码:
import sys
from PyQt5.QtWidgets import *
class menu_grid(QFrame):
def __init__(self, parent):
super(menu_grid, self).__init__(parent)
self.HBoxUI()
def HBoxUI(self):
self.Glayout = QHBoxLayout()
self.mytask = QPushButton('My Task')
self.Glayout.addWidget(self.mytask)
self.rasca = QPushButton('Rasca')
self.Glayout.addWidget(self.rasca)
self.setLayout(self.Glayout)
class main_frame(QFrame):
def __init__(self, parent=None):
super(main_frame, self).__init__(parent)
self.myt = QFrame()
self.myt.setStyleSheet("background-color: rgb(0, 20, 0);")
self.rasc = QFrame()
self.rasc.setStyleSheet("background-color: rgb(80, 80, 20);")
self.stack = QStackedWidget(self)
self.stack.addWidget(self.myt)
self.stack.addWidget(self.rasc)
self.Mlayout = QGridLayout()
self.Mlayout.addWidget(self.stack)
self.setLayout(self.Mlayout)
## here is button slot
def open_myt(self):
print("click_my")
self.stack.setCurrentIndex(0)
def open_rasca(self):
print("click_ras")
self.stack.setCurrentIndex(1)
class RASCAFE_Main(QMainWindow, menu_grid, main_frame):
def __init__(self, parent=None):
super(RASCAFE_Main, self).__init__(parent)
self.initUI()
## here is button signal
self.mytask.clicked.connect(self.open_myt)
self.rasca.clicked.connect(self.open_rasca)
def initUI(self):
self.setGeometry(100, 100, 1280, 720)
self.mainLayer = QWidget(self)
self.mainLayout = QVBoxLayout(self.mainLayer)
self.main_gd = menu_grid(self)
self.mainLayout.addWidget(self.main_gd)
self.main_fr = main_frame(self)
self.mainLayout.addWidget(self.main_fr)
self.mainLayer.setLayout(self.mainLayout)
self.setCentralWidget(self.mainLayer)
if __name__ == "__main__":
app = QApplication(sys.argv)
Rascafe = RASCAFE_Main()
Rascafe.show()
sys.exit(app.exec_())