开发者

pyqt5主窗口按键弹出子窗口的实现

目标:主窗口保持,通过按键弹出子窗口

步骤一pyqt5创建主窗口,并设置按键

from PyQt5.QtWidgets import *
import sys
 # 主窗口
class Main(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("主窗口")
        fbutton = QPushButton("弹出子窗口", self)
        fbutton.clicked.co编程客栈nnect(self.show_child)
 
    def show_child(self):
        print("子窗口")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Main()
    window.show()
    sys.exit(app.exec_())

运行结果:

pyqt5主窗口按键弹出子窗口的实现

步骤二pyqt5创建子窗口,并设置内容

from PyQt5.QtWidgets import *
import sys
 
 
class Child(QMainWindow):
    def __init__(self):
        super().__init__()
        self.resize(360, 240)
        self.setWindowTitle("我是子窗口啊")

# 运行主窗口
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Child()
    window.show()
    sys.exit(app.exec_())

运行结果:

pyqt5主窗口按键弹出子窗口的实现

步骤三pyqt5通过主窗口按键弹出子窗口

from PyQt5.QtWidgets import *
imp编程客栈ort sys
 # 主窗口
class Main(QMainWindow):
    def __init__(self):
php        super().__init__()
        self.setWindowTitle("主窗口")
        fbutton = QPushButton("弹出子窗口", self)
        fbutton.clicked.connect(self.show_child)
 
    def show_child(self):
        print("子窗口")
        self.resize(360, 240)
        self.setWindowTitle("我是子窗口啊")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Main()
    window.show()
    sys.exit(app.exec_())

本以为可以实现,结果和预想区别很大,按下按键后,结果如下:

pyqt5主窗口按键弹出子窗口的实现

结果是之间取代了原来的主窗口而且按键没有消失

原因是只有一个类,只有一个主窗口,所以修改内容都是在同一个窗口内修改的

经过修改,第二次修改后测试源码:

from PyQt5.QtWidgets import *
import sys
 # 主窗口
class Main(QMainWind开发者_自学开发ow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("主窗口")
        fbutton =js QPushButton("弹出子窗口", self)
        fbutton.clicked.connect(self.show_child)
    def show_child(self):
        print("子窗口")
        child_window = Child()
        child_window.show()
        
class child(QMainWindow):
    def __init__(self):
        super().__init__() 
        print("子窗口")
        self.resizephp(360, 240)
        self.setWindowTitle("我是子窗口啊")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Main()
    window.show()
    sys.exit(app.exec_())

但是,这里遇到个问题,子窗口闪退。

pyqt5主窗口按键弹出子窗口的实现

看到是可以打印子窗口,说明是已经进入子窗口,但是就是一直闪退

研究了很久,将show()改成exec_()后运行,报错如下,原因是不存在exec_()

pyqt5主窗口按键弹出子窗口的实现

解决办法:将class的QMainWindow改成QDialog

pyqt5主窗口按键弹出子窗口的实现

改成

pyqt5主窗口按键弹出子窗口的实现

运行结果:

pyqt5主窗口按键弹出子窗口的实现

到此这篇关于pyqt5主窗口按键弹出子窗口的实现的文章就介绍到这了,更多相关pyqt5主窗口按键弹出子窗口内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜