亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按鈕沒有響應

按鈕沒有響應

瀟瀟雨雨 2022-09-20 17:38:47
我對蟒蛇和PyQt5很陌生。我的目標是使用“按鈕”移動到“堆疊布局”中的下一個小部件。但是,它沒有響應,并且似乎不會進入函數以移動到下一個小部件。我不知道是我搞砸了的遺產,還是別的什么。任何指導都非常感謝。謝謝!from PyQt5 import QtCore, QtGui, QtWidgetsclass Menu(QtWidgets.QWidget):    def setupUI(self, Main):        Main.setObjectName("Main")        Main.setFixedSize(900, 500)        self.width = 900        self.height = 500        self.setFixedSize(self.width, self.height)        self.menu = QtWidgets.QStackedLayout()        self.welcomeMenu = QtWidgets.QWidget()        self.mainMenu = QtWidgets.QWidget()        self.welcomeUi()        self.menuUi()        self.menu.addWidget(self.welcomeMenu)        self.menu.addWidget(self.mainMenu)    def welcomeUi(self):        #Button for entering portal        self.entrBtn = QtWidgets.QPushButton(self.welcomeMenu)        self.entrBtn.setGeometry(QtCore.QRect(25,150,200,50))        self.entrBtn.setText("To the menu screen!")        #Having welcome text        self.welcomeText = QtWidgets.QLabel(self.welcomeMenu)        self.welcomeText.setGeometry(QtCore.QRect(30, 120, 480, 200))        self.welcomeText.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)        self.welcomeText.setText("Welcome!")    def menuUi(self):        self.text = QtWidgets.QLabel(self.mainMenu)        self.text.setGeometry(QtCore.QRect(30, 120, 480, 200))        self.text.setText("test")class Main(QtWidgets.QMainWindow, Menu):    def __init__(self):        super(Main, self).__init__()        self.setupUI(self)        self.entrBtn.clicked.connect(self.menuWindow)    def menuWindow(self):        self.menu.setCurrentWidget(self.mainMenu)if __name__ == "__main__":    import sys    app = QtWidgets.QApplication(sys.argv)    m = Main()    sys.exit(app.exec_())
查看完整描述

1 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

問題很簡單:QLabel位于按鈕的頂部,因此它將阻止所有鼠標事件。簡單的解決方案是使用raise_()將QPushButton放在Q標簽上:


# ...

self.welcomeText.setText("Welcome!")


self.entrBtn.raise_()

但這解決了表面的問題,你還有其他更大的問題:你不應該繼承2 QWidget,也沒有顯示Main。最好按如下方式重寫代碼:


from PyQt5 import QtCore, QtGui, QtWidgets



class MainWindow(QtWidgets.QMainWindow):

    def __init__(self, parent=None):

        super().__init__(parent)


        self.welcomeMenu = QtWidgets.QWidget()

        self.mainMenu = QtWidgets.QWidget()


        self.fill_welcomeUi()

        self.fill_menuUi()


        self.stacked_lay = QtWidgets.QStackedLayout()


        self.stacked_lay.addWidget(self.welcomeMenu)

        self.stacked_lay.addWidget(self.mainMenu)


        central_widget = QtWidgets.QWidget()

        self.setCentralWidget(central_widget)

        central_widget.setLayout(self.stacked_lay)


        self.entrBtn.clicked.connect(self.menuWindow)


        self.resize(640, 480)


    def menuWindow(self):

        self.stacked_lay.setCurrentWidget(self.mainMenu)


    def fill_welcomeUi(self):


        #Button for entering portal

        self.entrBtn = QtWidgets.QPushButton(self.welcomeMenu)

        self.entrBtn.setGeometry(QtCore.QRect(25,150,200,50))

        self.entrBtn.setText("To the menu screen!")


        #Having welcome text

        self.welcomeText = QtWidgets.QLabel(self.welcomeMenu)

        self.welcomeText.setGeometry(QtCore.QRect(30, 120, 480, 200))

        self.welcomeText.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)

        self.welcomeText.setText("Welcome!")


        self.entrBtn.raise_()


    def fill_menuUi(self):

        self.text = QtWidgets.QLabel(self.mainMenu)

        self.text.setGeometry(QtCore.QRect(30, 120, 480, 200))

        self.text.setText("test")




if __name__ == "__main__":

    import sys

    app = QtWidgets.QApplication(sys.argv)

    m = MainWindow()

    m.show()

    sys.exit(app.exec_())


查看完整回答
反對 回復 2022-09-20
  • 1 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號