[英]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
轉換代碼是更合理的解決方案?
兩種解決方案都很好,它們的優點和缺點必須與您想要做的事情進行權衡,而且很多時候這取決於程序員的品味。
允許繼承[+]
運行應用程序時沒有額外的負載[+]
每次修改文件時將 .ui 轉換為 .py [-]
修改 .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.