pyqt5主窗口按鍵彈出子窗口的實(shí)現(xiàn)
目標(biāo):主窗口保持,通過(guò)按鍵彈出子窗口
步驟一:pyqt5創(chuàng)建主窗口,并設(shè)置按鍵
from PyQt5.QtWidgets import * import sys # 主窗口 class Main(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("主窗口") fbutton = QPushButton("彈出子窗口", self) fbutton.clicked.connect(self.show_child) def show_child(self): print("子窗口") if __name__ == "__main__": app = QApplication(sys.argv) window = Main() window.show() sys.exit(app.exec_())
運(yùn)行結(jié)果:
步驟二:pyqt5創(chuàng)建子窗口,并設(shè)置內(nèi)容
from PyQt5.QtWidgets import * import sys class Child(QMainWindow): def __init__(self): super().__init__() self.resize(360, 240) self.setWindowTitle("我是子窗口啊") # 運(yùn)行主窗口 if __name__ == "__main__": app = QApplication(sys.argv) window = Child() window.show() sys.exit(app.exec_())
運(yùn)行結(jié)果:
步驟三:pyqt5通過(guò)主窗口按鍵彈出子窗口
from PyQt5.QtWidgets import * import sys # 主窗口 class Main(QMainWindow): def __init__(self): 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_())
本以為可以實(shí)現(xiàn),結(jié)果和預(yù)想?yún)^(qū)別很大,按下按鍵后,結(jié)果如下:
結(jié)果是之間取代了原來(lái)的主窗口而且按鍵沒(méi)有消失
原因是只有一個(gè)類,只有一個(gè)主窗口,所以修改內(nèi)容都是在同一個(gè)窗口內(nèi)修改的
經(jīng)過(guò)修改,第二次修改后測(cè)試源碼:
from PyQt5.QtWidgets import * import sys # 主窗口 class Main(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("主窗口") fbutton = 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.resize(360, 240) self.setWindowTitle("我是子窗口啊") if __name__ == "__main__": app = QApplication(sys.argv) window = Main() window.show() sys.exit(app.exec_())
但是,這里遇到個(gè)問(wèn)題,子窗口閃退。
看到是可以打印子窗口,說(shuō)明是已經(jīng)進(jìn)入子窗口,但是就是一直閃退
研究了很久,將show()改成exec_()后運(yùn)行,報(bào)錯(cuò)如下,原因是不存在exec_()
解決辦法:將class的QMainWindow改成QDialog
改成
運(yùn)行結(jié)果:
到此這篇關(guān)于pyqt5主窗口按鍵彈出子窗口的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)pyqt5主窗口按鍵彈出子窗口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于TensorFlow、Keras、Python版本匹配一覽表
這篇文章主要介紹了關(guān)于TensorFlow、Keras、Python版本匹配一覽表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03el-table 多表格彈窗嵌套數(shù)據(jù)顯示異常錯(cuò)亂問(wèn)題解決方案
使用vue+element開(kāi)發(fā)報(bào)表功能時(shí),需要列表上某列的超鏈接按鈕彈窗展示,在彈窗的el-table列表某列中再次使用超鏈接按鈕點(diǎn)開(kāi)彈窗,以此類推多表格彈窗嵌套,本文以彈窗兩次為例,需要的朋友可以參考下2023-11-11Python內(nèi)置函數(shù)input()示例詳解
input()函數(shù)是Python中用于獲取用戶輸入的一個(gè)簡(jiǎn)單而強(qiáng)大的工具,它在創(chuàng)建需要用戶交互的程序時(shí)非常有用,這篇文章主要介紹了Python內(nèi)置函數(shù)input()詳解,需要的朋友可以參考下2024-04-04Python實(shí)現(xiàn)統(tǒng)計(jì)文本中字符的方法小結(jié)
在計(jì)算機(jī)編程中,經(jīng)常需要對(duì)文本數(shù)據(jù)進(jìn)行處理和分析,字符統(tǒng)計(jì)是其中一個(gè)常見(jiàn)任務(wù),本文將詳細(xì)介紹如何使用Python進(jìn)行字符統(tǒng)計(jì),希望對(duì)大家有所幫助2024-01-01opencv python Canny邊緣提取實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了opencv python Canny邊緣提取實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02