PyQt5實現界面跳轉

来源:https://www.cnblogs.com/qdzj/archive/2018/04/30/8974660.html
-Advertisement-
Play Games

網上關於PyQt5的教程很少,特別是界面跳轉這一塊兒,自己研究了半天,下來和大家分享一下 一、首先是主界面 二、跳轉界面Demo1 三、跳轉界面Demo2 ...


網上關於PyQt5的教程很少,特別是界面跳轉這一塊兒,自己研究了半天,下來和大家分享一下

一、首先是主界面


1
# -*- coding: utf-8 -*- 2 3 # Form implementation generated from reading ui file 'Form.ui' 4 # 5 # Created by: PyQt5 UI code generator 5.10.1 6 # 7 # WARNING! All changes made in this file will be lost! 8 #要註意的是跳轉界面第二個必須使用QDialog類,不能使用QWidget,我也不知道為什麼,特別註意 9 from PyQt5 import QtCore, QtGui, QtWidgets 10 from PyQt5.QtWidgets import QMainWindow, QApplication 11 import Dialog1 12 import Dialog2 13 import sys 14 15 16 class Ui_Form(object): #這是用PyQt Designer生成的代碼,很簡單的,拖動控制項,生成ui文件,然後UIC轉換成py文件 17 def setupUi(self, Form): 18 Form.setObjectName("Form") 19 Form.resize(440, 310) 20 self.form = Form 21 self.btn_d1 = QtWidgets.QPushButton(Form) 22 self.btn_d1.setGeometry(QtCore.QRect(60, 140, 75, 23)) 23 self.btn_d1.setObjectName("btn_d1") 24 self.btn_d2 = QtWidgets.QPushButton(Form) 25 self.btn_d2.setGeometry(QtCore.QRect(180, 140, 75, 23)) 26 self.btn_d2.setObjectName("btn_d2") 27 self.btn_exit = QtWidgets.QPushButton(Form) 28 self.btn_exit.setGeometry(QtCore.QRect(310, 140, 75, 23)) 29 self.btn_exit.setObjectName("btn_exit") 30 31 self.retranslateUi(Form) 32 QtCore.QMetaObject.connectSlotsByName(Form) 33 34 def retranslateUi(self, Form): 35 _translate = QtCore.QCoreApplication.translate 36 Form.setWindowTitle(_translate("Form", "Form")) 37 self.btn_d1.setText(_translate("Form", "Demo1")) 38 self.btn_d1.clicked.connect(self.jump_to_demo1) 39 self.btn_d2.setText(_translate("Form", "Demo2")) 40 self.btn_d2.clicked.connect(self.jump_to_demo2) 41 self.btn_exit.setText(_translate("Form", "Exit")) 42 self.btn_exit.clicked.connect(self.exit) 43 44 def jump_to_demo1(self): #這一塊註意,是重點從主界面跳轉到Demo1界面,主界面隱藏,如果關閉Demo界面,主界面進程會觸發self.form.show()會再次顯示主界面 45 self.form.hide() #如果沒有self.form.show()這一句,關閉Demo1界面後就會關閉程式 46 form1 = QtWidgets.QDialog() 47 ui = Dialog1.Ui_Dialog1() 48 ui.setupUi(form1) 49 form1.show() 50 form1.exec_() 51 self.form.show() 52 53 def jump_to_demo2(self): 54 self.form.hide() 55 form2 = QtWidgets.QDialog() 56 ui = Dialog2.Ui_Dialog2() 57 ui.setupUi(form2) 58 form2.show() 59 form2.exec_() 60 self.form.show() 61 62 def exit(self): 63 self.form.close() 64 65 66 if __name__ == "__main__": 67 app = QApplication(sys.argv) 68 form = QtWidgets.QWidget() 69 window = Ui_Form() 70 window.setupUi(form) 71 form.show() 72 sys.exit(app.exec_())

二、跳轉界面Demo1

 1 # -*- coding: utf-8 -*-
 2 
 3 # Form implementation generated from reading ui file 'Dialog1.ui'
 4 #
 5 # Created by: PyQt5 UI code generator 5.10.1
 6 #
 7 # WARNING! All changes made in this file will be lost!
 8 
 9 from PyQt5 import QtCore, QtGui, QtWidgets
10 
11 class Ui_Dialog1(object):
12     def setupUi(self, Dialog1):
13         Dialog1.setObjectName("Dialog1")
14         Dialog1.resize(400, 300)
15         self.dialog=Dialog1
16         self.pushButton = QtWidgets.QPushButton(Dialog1)
17         self.pushButton.setGeometry(QtCore.QRect(140, 140, 75, 23))
18         self.pushButton.setObjectName("pushButton")
19 
20         self.retranslateUi(Dialog1)
21         QtCore.QMetaObject.connectSlotsByName(Dialog1)
22 
23     def retranslateUi(self, Dialog1):
24         _translate = QtCore.QCoreApplication.translate
25         Dialog1.setWindowTitle(_translate("Dialog1", "Dialog"))
26         self.pushButton.setText(_translate("Dialog1", "Jump to main"))
27         self.pushButton.clicked.connect(self.jump_to_main)
28 
29     def jump_to_main(self):
30         self.dialog.close()

三、跳轉界面Demo2

 1 # -*- coding: utf-8 -*-
 2 
 3 # Form implementation generated from reading ui file 'Dialog2.ui'
 4 #
 5 # Created by: PyQt5 UI code generator 5.10.1
 6 #
 7 # WARNING! All changes made in this file will be lost!
 8 
 9 from PyQt5 import QtCore, QtGui, QtWidgets
10 from PyQt5.QtWidgets import QMainWindow, QDialog, QApplication
11 import sys
12 
13 
14 class Ui_Dialog2(object):
15     def setupUi(self, Dialog2):
16         Dialog2.setObjectName("Dialog2")
17         Dialog2.resize(400, 300)
18         self.dialog = Dialog2
19         self.pushButton = QtWidgets.QPushButton(Dialog2)
20         self.pushButton.setGeometry(QtCore.QRect(140, 160, 75, 23))
21         self.pushButton.setObjectName("pushButton")
22 
23         self.retranslateUi(Dialog2)
24         QtCore.QMetaObject.connectSlotsByName(Dialog2)
25 
26     def retranslateUi(self, Dialog2):
27         _translate = QtCore.QCoreApplication.translate
28         Dialog2.setWindowTitle(_translate("Dialog2", "Dialog"))
29         self.pushButton.setText(_translate("Dialog2", "Jump to main"))
30         self.pushButton.clicked.connect(self.go_main)
31 
32     def go_main(self):
33         self.dialog.close()
34 
35 if __name__ == "__main__":
36     app = QApplication(sys.argv)
37     form = QtWidgets.QDialog()
38     ui = Ui_Dialog2()
39     ui.setupUi(form)
40     form.show()
41     sys.exit(app.exec_())

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 很多Python的程式員都會混淆 迭代器 和 生成器 的概念和作用,分不清到底兩個有什麼區別。今天我們來好好說一說這兩個概念。迭代器(Iterator)Iterator PatternIterator 是一種設計模式,它的作用是,提供一種順序訪問一個聚合對象中的各個元素,但又不需要暴露出其內部實現的... ...
  • 消息隊列是大型複雜系統解耦利器。本文根據應用廣泛的消息隊列RabbitMQ,介紹Spring Boot應用程式中隊列中間件的開發和應用。 一、RabbitMQ基礎 1、RabbitMQ簡介 RabbitMQ是Spring所在公司Pivotal自己的產品,是基於AMQP高級隊列協議的消息中間件,採用e ...
  • lesson Eleven 2018-04-30 22:34:59 多態性 1.多態性指的是什麼? 多態性,可以理解為一個事物的多種表現形態。 1.1方法的重載與重寫 1.2子類對像的多態性 2.子類對像的多態性使用的前提 2.1要有類的繼承 2.2要有子類對父類方法的重寫 3.程式運行分為編譯狀態 ...
  • 項目做前後端分離時,我們會經常提供Json數據給前端,如果有一個統一的Json格式返回工具類,那麼將大大提高開發效率和減低溝通成本。 ...
  • K近鄰演算法(KNN)是指一個樣本如果在特征空間中的K個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。即每個樣本都可以用它最接近的k個鄰居來代表。KNN演算法適合分類,也適合回歸。KNN演算法廣泛應用在推薦系統、語義搜索、異常檢測。 KNN演算法分類原理圖: 圖中 ...
  • shiro的過濾器也是不多的我們可以自定義的方法,它的繼承體系如下: 另外UserFilter是繼承於AccessControlFilter 1、NameableFilter NameableFilter給Filter起個名字,如果沒有設置預設就是FilterName;還記得之前的如authc嗎?當 ...
  • 文件格式 ①絕對路徑:從盤符開始,相同路徑必定是相同文件 ②相對路徑:不是從盤符開始,從當前文件夾下開始查找文件(相同路徑不易i的那個是相同文件) 訪問模式 說明 r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是預設模式。 w 打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件 ...
  • 一 寫在開頭 1.1 本文內容 C語言是一門古老而又高深莫測的編程語言,她身上總是閃爍著各種“巨坑”(對於我這種沒參透的菜鳥而言)。實踐出真知,親們在看C語言的資料時可千萬別想當然啊。 二 開始裝13 這是某本關於C語言指針的書中的一個小部分,具體書名不說了,內容如下圖所示。 我於是寫了一段代碼進行 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...