python - 在 main 中打开一个对话框
问题描述
我想在程序的主体中打开一个对话框文件。我没有错误,但我的对话框没有出现。我想我必须对“QQmlApplicationEngine”说谁是父母,我把父母放在了,但没有附加任何内容。
engine = QQmlApplicationEngine(app) <- app :就像声明谁是父母一样?
主文件
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
try:
from PyQt5.QtCore import (
pyqtProperty, pyqtSignal, pyqtSlot,
QAbstractListModel, QModelIndex, QObject, Qt, QTimer, QVariant, QMetaObject,
)
from PyQt5 import QtGui, QtCore
from PyQt5.QtGui import QGuiApplication
from PyQt5.QtQml import QQmlApplicationEngine
from PyQt5.QtQuick import QQuickView
import sys
except ImportError as e:
raise ImportError(e)
class openDialog(object):
def __init__(self, parent, app):
engine = QQmlApplicationEngine(app)
engine.load('dialog.qml')
''' '''
if not engine.rootObjects():
sys.exit(app.exec_())
win = engine.rootObjects()[0]
ctx = engine.rootContext()
#ctx.findChild(QObject, "dialog1").setProperty("visible", 1)
#win.findChild(QObject, "lbl1").setProperty("text", "toto")
#win.findChild(QObject, "dialog1").setProperty("visible", 1)
print('dialog')
if __name__ == "__main__":
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.quit.connect(app.quit)
context = engine.rootContext()
engine.load("main.qml")
if not engine.rootObjects():
sys.exit(app.exec_())
win = engine.rootObjects()[0]
openDialog(win, app)
sys.exit(app.exec_())
main.qml
import QtQuick 2.4
import QtQuick.Layouts 1.13
import QtQuick.Controls 2.4
import QtQuick.Dialogs 1.1
ApplicationWindow {
title: qsTr("WoodMan Training")
width: 600
height: 400
visible: true
}
对话框.qml
import QtQuick 2.4
import QtQuick.Layouts 1.13
import QtQuick.Controls 2.5
import QtQuick.Dialogs 1.1
Dialog {
anchors.centerIn: parent
id: msgDialog
objectName: "dialog1"
title: "Title"
modal: true
visible:true
standardButtons: Dialog.Ok
onAccepted: console.log("Ok clicked")
onRejected: console.log("Cancel clicked")
Label {
objectName: "lbl1"
text: "un texte"
}
}
解决方案
推荐阅读
- maven - 如何修复原因:java.lang.NullPointerException:需要位置。JavaFX
- proteus - proteus 是否支持 onKey up/down 事件
- html - Popover 边框阴影和对齐问题
- sql - 如何成功调用包
- angular - 版本升级到 Ionic 4 时找不到模块 'ionic-angular'.ts
- c# - 比较列表
并获得包括空值在内的差异 - json - Hive:忽略创建表中的字段
- android - 在 Fragments 中保存和恢复 ListView (livedata)
- flutter - 如何在 TextFormField 中添加额外的标签?
- php - 从 MSSQL 传递到 PHP 时不显示欧元符号