如何将 .qml 扩展名更改为 .ui 以在 pyqt5 应用程序中使用它
Posted
技术标签:
【中文标题】如何将 .qml 扩展名更改为 .ui 以在 pyqt5 应用程序中使用它【英文标题】:How to change the .qml extension to a .ui to use it in pyqt5 application 【发布时间】:2021-11-12 10:19:15 【问题描述】:我使用 qt 设计器 创建我的应用程序的设计,然后使用命令 pyuic5 example.ui -o example.py 将每个窗口转换为 python 文件,以获取 Ui_Form 类并调用它在我的程序中。所以一切都在工作,但现在我们改变了我们的设计,我们得到了一个 qml 文件。我的问题是如何在不改变应用程序概念的情况下使用这个 qml 文件。有没有像pyuic5这样的方法(获取Ui_Form类)来转换qml并在pyqt5中使用。
这是旧应用的示例:
from main_screen import Ui_Form as Ui_main_screen
class MainScreen(QWidget, Ui_main_screen):
teachButton = False
manageButton = False
utilitiesButton = False
adminButton = False
helpButton = False
systemButton = False
inspectionButton = False
modelSelected = None
def __init__(self):
super(MainScreen, self).__init__()
#QWidget.__init__(self)
self.setupUi(self)
self.trans = QTranslator(self)
self.toLanguage()
self.product()
self.Menu() .....
如您所见,我将 Ui_Form 导入到 MainScreen 类中。 现在我想对 qml 文件做同样的事情
import QtQuick 2.7
Item
width:904
height:678
Image
id: background
source: "images/background.png"
x: 0
y: 1
opacity: 1
Image
id: logo
source: "images/logo.png"
x: 691
y: 34
opacity: 1
Image
id: teach
source: "images/teach.png"
x: 717
y: 154
opacity: 1
Image
id: administration
source: "images/administration.png"
x: 711
y: 410
opacity: 0.49803921568627
Image
id: system
source: "images/system.png"
x: 708
y: 468
opacity: 0.49803921568627
Image
id: utilities
source: "images/utilities.png"
x: 711
y: 353
opacity: 0.49803921568627
Image
id: help
source: "images/help.png"
x: 712
y: 524
opacity: 0.49803921568627
Image
id: teachinf_wizard
source: "images/teachinf_wizard.png"
x: 740
y: 196
opacity: 1
Image
id: inspection
source: "images/inspection.png"
x: 713
y: 295
opacity: 0.49803921568627
Image
id: manage
source: "images/manage.png"
x: 714
y: 239
opacity: 1
那么如何使用 qml 文件获取类似 Ui_Form 类的东西
【问题讨论】:
【参考方案1】:简答:
不,不能这样做。
长答案:
.ui 只是关于如何显示 qwidget 的一组指令,另一方面,qml 是一种编程语言,因为它们指示对象如何交互。
最接近您想要的是能够将 qml 嵌入到 QWidget 中,例如使用 QQuickWidget:
import os
import sys
import os
from pathlib import Path
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQuickWidgets import QQuickWidget
CURRENT_DIRECTORY = Path(__file__).resolve().parent
def main():
app = QApplication(sys.argv)
widget = QQuickWidget(resizeMode=QQuickWidget.ResizeMode.SizeRootObjectToView)
filename = os.fspath(CURRENT_DIRECTORY / "main.qml")
url = QUrl.fromLocalFile(filename)
widget.setSource(url)
widget.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
【讨论】:
以上是关于如何将 .qml 扩展名更改为 .ui 以在 pyqt5 应用程序中使用它的主要内容,如果未能解决你的问题,请参考以下文章
让 Graphic Magick 检测 Ghostscript 以在 Windows 上阅读 pdf。如何将 WINDOWS CMD 上的 Ghostscript 调用名称更改为“gs”?
Material-UI - 如何将自定义 Snackbar 的过渡更改为 Slide
如何将活动 UI 的点击传递到地图片段以将地图更改为 MAP_TYPE_HYBRID