簡體   English   中英

為什么在 pyqt5 中我應該使用 pyuic5 而不是 uic.loadUi("my.ui")?

[英]Why in pyqt5 should I use pyuic5 and not uic.loadUi("my.ui")?

我一直在嘗試使用QT5 for Python,使用pyqt5 我注意到大多數教程建議使用pyuic5將 XML UI 轉換為 Python 代碼。 我還看過一些教程,他們使用uic.loadUi("myui.ui")動態加載XML UI 對我來說,這似乎是一個更清潔、更模塊化的解決方案,但它似乎是一個不受歡迎的選擇。 是否有理由使用pyuic5轉換代碼是更合理的解決方案?

兩種解決方案都很好,它們的優點和缺點必須與您想要做的事情進行權衡,而且很多時候這取決於程序員的品味。

pyuic5

  • 允許繼承[+]

  • 運行應用程序時沒有額外的負載[+]

  • 每次修改文件時將 .ui 轉換為 .py [-]

uic.loadUi()

  • 修改 .ui 時無需修改任何內容[+]

  • 編譯加時[+]

  • 不允許繼承(您可以使用uic.loadUiType()實現繼承) [-]

  • 不允許使用檢查[-]

使用pyuic5的最大原因是 IDE(例如 Visual Studio Code、PyCharm)不理解.ui文件,因此除非您將其編譯為 Python,否則無法為您的類提供代碼自省(例如小部件名稱的自動完成)。

對此進行了更多研究,對我來說,動態加載 QT Designer 生成的表單是可行的方法。 您可以使用以下命令解決無法訪問底層小部件的問題(假設您的表單中有一個名為bob_label的標簽):

self.bob_label: QLabel = self.findChild(QtWidgets.QLabel, 'bob_label')

在 PyCharm 中,無論如何,這將自動啟用 Intellisense(因此 IDE 現在知道窗口類中有一個名為bob_label的標簽)。 在 Visual Studio Code 中,盡管我付出了很大的努力,但我還是無法找到一種方法讓它輕松工作,盡管我最終確實管理了它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM