ABAP Netweaver, Hybris Commerce和SAP 云平臺的登錄認證
709
2025-04-05
歡迎來到我的博客,希望這篇文章對你有所幫助,如果覺得不錯,請搜藏哈。
文章目錄
HUD_Qt_for_Python開發之路3
1 UI文件與Python結合
1.1 將UI文件編譯為一個Python類(靜態加載)
1.2 問題
2 直接加載UI文件(動態加載)
2.1 加載UI文件
2.2 問題
3 交互問題
總結
HUD_Qt_for_Python開發之路3
1 UI文件與Python結合
這小節將研究下UI文件怎么與Python結合,還是老樣子,先找幫助文檔,看看有沒有幫助。
通過查看幫助文檔得知,UI文件與Python結合有兩種方式
將UI文件編譯為一個Python類使用
直接在Python中加載UI文件
1.1 將UI文件編譯為一個Python類(靜態加載)
此時加入我們的UI文件名稱為mainwindow.ui文件,那么需要執行以下指令,來將我們的UI文件轉化為類
pyside6-uic mainwindow.ui > ui_mainwindow.py
1
上面這天命令執行完畢后,我們將得到一個ui_mainwindow.py的文件,在使用的時候,使用下面指令,導入即可
from ui_mainwindow import Ui_MainWindow
1
完成代碼如下:
import sys from PySide6.QtWidgets import QApplication, QMainWindow from PySide6.QtCore import QFile from ui_mainwindow import Ui_MainWindow class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
重點就是加載UI文件的兩句話
self.ui = Ui_MainWindow() self.ui.setupUi(self)
1
2
1.2 問題
用這種方法使用到時沒有問題,應該是適用于那種前后端分離的情況,前端UI已經全部制作完成,后端拿到現成的UI文件來實現邏輯邏輯控制即可,要是UI文件和開發是同時進行,那么這種方法就不咋合適了,總不能沒更新一個UI就執行一次pyside6-uic 吧 。所以我還是要用第二種了,直接加載的方式。
2 直接加載UI文件(動態加載)
直接加載UI文件可以很好的規避掉第一種方式中每次更新UI文件都需要重新編譯的一次的問題。使用這種加載UI文件的方式,需要用到QUiLoader模塊,只需要引入即可
from PySide6.QtUiTools import QUiLoader
2.1 加載UI文件
幫助文檔中加載UI文件代碼如下
ui_file = QFile("mainwindow.ui") ui_file.open(QFile.ReadOnly) loader = QUiLoader() window = loader.load(ui_file) window.show()
1
2
3
4
5
6
但是呢,在最新的Qt6中,自動生成的代碼有點不一樣,如下:
def load_ui(self): loader = QUiLoader() path = os.path.join(os.path.dirname(__file__), "hud.ui") ui_file = QFile(path) ui_file.open(QFile.ReadOnly) loader.load(ui_file, self) ui_file.close()
1
2
3
4
5
6
7
其實就是多加了一個獲取文件路徑的內容吧,應該理解沒有錯哈。
這里貼一下官方文檔中的完整代碼供參考
import sys from PySide6.QtUiTools import QUiLoader from PySide6.QtWidgets import QApplication from PySide6.QtCore import QFile, QIODevice if __name__ == "__main__": app = QApplication(sys.argv) ui_file_name = "mainwindow.ui" ui_file = QFile(ui_file_name) if not ui_file.open(QIODevice.ReadOnly): print(f"Cannot open {ui_file_name}: {ui_file.errorString()}") sys.exit(-1) loader = QUiLoader() window = loader.load(ui_file) ui_file.close() if not window: print(loader.errorString()) sys.exit(-1) window.show() sys.exit(app.exec_())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2.2 問題
這種方式就是我們的控件沒法自動補全,因為編譯器也不知道你繼承自哪里。
3 交互問題
這里就要尷尬了,官方文檔只說了怎么加載UI文件,問題是UI里面的控件我怎么調用沒有說,對于毫無經驗的新手來說,是在是太難了。你看下面這樣
這樣
阿西吧,簡直就是災難現場,這幾天就是一天研究一句話,這進度,都沒法和蝸牛比。要崩潰了,不搞了。
總結
其實動態加載和靜態加載都有各自的優缺點,這將像是你你和你女朋友在一起的時間一樣,可以短了刺激,長了就是陪伴,這個也是要結合著使用,可以先在動態里面吧界面搞定了,完了在轉成靜態的,配合Python進行高級開發。
Python Qt
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。