【PyQt5,2021最新Java常用开源库总结
PyQt5 實現多個頁面跳轉,我們可以借助一個 Controller 控制器來實現,大體思路如下:
# 利用一個控制器來控制頁面的跳轉class Controller:def __init__(self):passdef show_A(self):# 創建 A 窗口對象并顯示# 關閉其余窗口對象def show_B(self):# 創建 B 窗口對象并顯示# 關閉其余窗口對象def show_C(self):# 創建 C 窗口對象并顯示# 關閉其余窗口對象來看一個使用情景:
-
用 Qt designer 設計好了三個頁面:hello.py、login.py、operate.py
-
hello.py 中有一個 Id 為 loginBuuton 的按鈕,用于跳轉到 login.py 窗口
-
hello.py 中還有一個 Id 為 operateButton 的按鈕,用于跳轉到 operate.py 窗口
實現效果
注:由于我們的 界面 與 邏輯 是分離的,所以界面只需滿足上面的使用情境中的要求即可。
運行程序啟動一個 hello.py 的歡迎界面:
點擊 票務管理,實際上是點擊了 loginButton 按鈕,跳轉到了 login.py 登錄界面:
如果歡迎界面中點擊的是 票務查詢,實際上是點擊了 operateButton,會跳轉到 operate.py 界面:
代碼編寫
首先導入需要的模塊:系統模塊 和 利用designer設計的頁面
import sysfrom PyQt5 import QtCore, QtWidgets, QtCore# 導入 Qt designer 設計的頁面from hello import Ui_MainWindow as Hello_Ui from login import Ui_MainWindow as Login_Uifrom operate import Ui_MainWindow as Operate_Ui然后寫頁面對應的窗口類,我們這里簡單的實現 一個頁面往其他頁面的跳轉;
實現跳轉的邏輯主要都在 HelloWindow 類中,其他窗口類僅僅做了初始化:
# 主窗口class HelloWindow(QtWidgets.QMainWindow, Hello_Ui):switch_window1 = QtCore.pyqtSignal() # 跳轉信號switch_window2 = QtCore.pyqtSignal() # 跳轉信號def __init__(self):super(HelloWindow, self).__init__()self.setupUi(self)self.queryButton.clicked.connect(self.goOperate)self.manageButton.clicked.connect(self.goLogin)def goLogin(self):self.switch_window1.emit()def goOperate(self):self.switch_window2.emit()# 登錄窗口class LoginWindow(QtWidgets.QMainWindow, Login_Ui):def __init__(self):super(LoginWindow, self).__init__()self.setupUi(self)# 操作窗口class OperateWindow(QtWidgets.QMainWindow, Operate_Ui):def __init__(self):super(OperateWindow, self).__init__()self.setupUi(self)控制器用來控制頁面的跳轉:
# 利用一個控制器來控制頁面的跳轉class Controller:def __init__(self):pass# 跳轉到 hello 窗口def show_hello(self):self.hello = HelloWindow()self.hello.switch_window1.connect(self.show_login)self.hello.switch_window2.connect(self.show_operate)self.hello.show()# 跳轉到 login 窗口, 注意關閉原頁面def show_login(self):self.login = LoginWindow()self.hello.close()self.login.show()# 跳轉到 operate 窗口, 注意關閉原頁面def show_operate(self):self.operate = OperateWindow()self.hello.close()self.operate.show()啟動整個項目:
def main():app = QtWidgets.QApplication(sys.argv)controller = Controller() # 控制器實例controller.show_hello() # 默認展示的是 hello 頁面sys.exit(app.exec_())if __name__ == '__main__':main()補充:使用 designer 開發,頁面跳轉函數
===========================================================================================
假設寫好了一個 A 頁面:
class MainWindow(QMainWindow, Ui_MainWindow): # 多重繼承QMainWindow和Ui_MainWindowdef __init__(self):super(MainWindow, self).__init__() # 先調用父類QMainWindow的初始化方法self.setupUi(self) # 再調用setupUi方法在 B 頁面引入了 A 頁面:
from main import MainWindow在 A 頁面需要進行頁面跳轉只需要封裝一個以下函數即可:
# 關閉當前界面, 打開主界面def toMainWindow(self):self.ui1 = MainWindow()self.ui1.show()self.close()不使用 designer 的頁面跳轉
=====================================================================================
這個更簡單了,只需要在 main 方法里將 A 頁面的點擊事件與 B 頁面的展示綁定即可:
import sysfrom PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication# 《MySql面試專題》# 《MySql性能優化的21個最佳實踐》# 《MySQL高級知識筆記》文中展示的資料包括:**《MySql思維導圖》《MySql核心筆記》《MySql調優筆記》《MySql面試專題》《MySql性能優化的21個最佳實踐》《MySq高級知識筆記》**如下圖## 獲取方式:[點擊這里前往傳送門](https://gitee.com/vip204888/java-p7)g-q3z1IyVi-1628598472549)][外鏈圖片轉存中...(img-DFM65ycS-1628598472550)][外鏈圖片轉存中...(img-9Tm5UA8L-1628598472551)][外鏈圖片轉存中...(img-LCZrlCJP-1628598472552)]文中展示的資料包括:**《MySql思維導圖》《MySql核心筆記》《MySql調優筆記》《MySql面試專題》《MySql性能優化的21個最佳實踐》《MySq高級知識筆記》**如下圖[外鏈圖片轉存中...(img-e4EEy30K-1628598472552)]## 獲取方式:[點擊這里前往傳送門](https://gitee.com/vip204888/java-p7)**關注我,點贊本文給更多有需要的人**總結
以上是生活随笔為你收集整理的【PyQt5,2021最新Java常用开源库总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行流 - 通用;仅使用库存接口开单 a
- 下一篇: Java:Java实现简单闹钟设计