05_HUD_Qt_for_Python開發之路3

      網友投稿 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 交互問題

      總結

      05_HUD_Qt_for_Python開發之路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小時內刪除侵權內容。

      上一篇:Excel中2010版進行宏錄制和執行的操作方法(excel錄制宏的使用實例)
      下一篇:WPS表格按照數字排序的方法步驟(wps表格怎么排列數字順序)
      相關文章
      久久精品国产精品亚洲人人 | 亚洲同性男gay网站在线观看| 亚洲综合伊人制服丝袜美腿| 亚洲综合国产精品第一页| 亚洲国产福利精品一区二区| 亚洲国产成人精品无码一区二区| 亚洲最大免费视频网| 日本亚洲视频在线| 成a人片亚洲日本久久| 亚洲第一页在线播放| 亚洲日本va在线视频观看| 国产精品亚洲精品久久精品| 亚洲制服丝袜在线播放| 亚洲一区二区三区免费视频 | 中文亚洲AV片在线观看不卡| 在线观看亚洲免费| 亚洲国产精品日韩专区AV| 国产成人精品日本亚洲11| 最新亚洲卡一卡二卡三新区| 久久精品a亚洲国产v高清不卡| 国产成人精品日本亚洲专区61| 国产亚洲精久久久久久无码77777| 亚洲精品无码AV中文字幕电影网站| 亚洲一区二区三区在线视频| 亚洲综合伊人久久大杳蕉| 亚洲不卡中文字幕无码| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲国产AV无码一区二区三区| 亚洲综合视频在线观看| 亚洲最大在线视频| 亚洲欧美日韩久久精品| 亚洲成a人片在线看| 亚洲国产精品成人午夜在线观看| 国产精品亚洲一区二区三区| 亚洲欧洲一区二区三区| 亚洲小说区图片区另类春色| 亚洲AV无码乱码在线观看富二代| 亚洲精品欧洲精品| 亚洲性色精品一区二区在线| 亚洲av日韩片在线观看| 亚洲欧美第一成人网站7777 |