为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Python PyQt 中保持窗口打开

如何在 Python PyQt 中保持窗口打开

饮歌长啸 2023-03-16 17:03:21
我正在尝试构建一个基于 python 的软件。(基于 PYQT 的软件)问题:我的第二个窗口在打开后立即关闭。问题:我的代码有问题吗?我如何解决它?注意:单击开始按钮时会打开第二个窗口。这是我的代码:class MainWindow(QMainWindow):    switch_window=pyqtSignal(str)    def __init__(self):        super().__init__()        self.initUI()    def initUI(self):        #Initialize        self.setGeometry(1000, 300, 1200, 800)        self.setWindowTitle('Sensorlyze')        self.setWindowIcon(QIcon('biosensor.jpg'))        icon = QIcon('biosensor.jpg')        # Add Text        l1= QLabel("Welcome to SensorLyze",self)        l1.move(25, 350)        # l1.setWordWrap(True)        l1.setFont(QFont('Calibri',15))        l1.adjustSize()        l2 = QLabel("A software to simply sensor analytics", self)        l2.move(25, 400)        l2.setFont(QFont('Calibri', 10))        l2.adjustSize()        #Add Buttons        button1 = QPushButton('Start',self)        button1.resize(button1.sizeHint())        button1.clicked.connect(start_clicked)        button1.move(60, 450)        button2 = QPushButton('Exit', self)        button2.resize(button2.sizeHint())        button2.clicked.connect(exit_clicked)        button2.move(240, 450)stylesheet = """    QMainWindow {        background-image: url("C:/Users/admin/Desktop/Sensorlyze/biosensor.jpg");         background-repeat: no-repeat;         background-position: center;    }"""# def switch(self):#         self.switch_window.emit(self.line_edit.text())def start_clicked():   window=QMainWindow()   window.setGeometry(300, 500, 500, 500)   window.setWindowTitle('Hello')   window.show()   win.hide()def exit_clicked():    msgBox=QMessageBox()    msgBox.setIcon(QMessageBox.Information)    msgBox.setText("Are you sure you want to exit?")    msgBox.setWindowTitle("Exit Sensorlyze")    msgBox.setStandardButtons(QMessageBox.Ok|QMessageBox.Cancel)    msgBox.buttonClicked.connect(msgButtonClick)    returnValue = msgBox.exec()    if returnValue==QMessageBox.Ok:        exit()def msgButtonClick(i):    print("Buttonclickedis:",i.text())我在这里错过了什么吗?任何帮助...
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

Alec 回答了这个问题,但如果您仍然不清楚,这里是更正后的代码。


import sys

from PyQt5.QtWidgets import QMainWindow, QLabel, QPushButton, QMessageBox, QApplication

from PyQt5.QtCore import pyqtSignal, pyqtSlot

from PyQt5.QtGui import QIcon, QFont

class MainWindow(QMainWindow):

    switch_window=pyqtSignal(str)

    def __init__(self):

        super().__init__()

        self.initUI()


    def initUI(self):

        #Initialize

        self.setGeometry(1000, 300, 1200, 800)

        self.setWindowTitle('Sensorlyze')

        self.setWindowIcon(QIcon('biosensor.jpg'))

        icon = QIcon('biosensor.jpg')


        # Add Text

        l1= QLabel("Welcome to SensorLyze",self)

        l1.move(25, 350)

        # l1.setWordWrap(True)

        l1.setFont(QFont('Calibri',15))

        l1.adjustSize()

        l2 = QLabel("A software to simply sensor analytics", self)

        l2.move(25, 400)

        l2.setFont(QFont('Calibri', 10))

        l2.adjustSize()


        #Add Buttons

        button1 = QPushButton('Start',self)

        button1.resize(button1.sizeHint())

        button1.clicked.connect(self.start_clicked)

        button1.move(60, 450)

        button2 = QPushButton('Exit', self)

        button2.resize(button2.sizeHint())

        button2.clicked.connect(self.exit_clicked)

        button2.move(240, 450)


    def start_clicked(self):

        self.window = QMainWindow()

        self.window.setGeometry(300, 500, 500, 500)

        self.window.setWindowTitle('Hello')

        self.window.show()

        # win.hide()


    def exit_clicked(self):

        msgBox = QMessageBox()

        msgBox.setIcon(QMessageBox.Information)

        msgBox.setText("Are you sure you want to exit?")

        msgBox.setWindowTitle("Exit Sensorlyze")

        msgBox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)

        msgBox.buttonClicked.connect(self.msgButtonClick)

        returnValue = msgBox.exec()


        if returnValue == QMessageBox.Ok:

            exit()


    def msgButtonClick(self, i):

        print("Buttonclickedis:", i.text())



stylesheet = """

    QMainWindow {

    background-image: url("C:/Users/admin/Desktop/Sensorlyze/biosensor.jpg"); 

    background-repeat: no-repeat; 

    background-position: center;

    }

"""


# def switch(self):

#         self.switch_window.emit(self.line_edit.text())


def main():

    app = QApplication(sys.argv)

    app.setStyleSheet(stylesheet)     # <---

    win=MainWindow()

    win.show()

    sys.exit(app.exec_())


if __name__ == '__main__':

    main()



查看完整回答
反对 回复 2023-03-16
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信