Python 运行PyQt代码不会打开窗口
我目前正在做一个python在线课程,这个练习的重点是PyQt。我正在使用Python 3.7和Qt5 讲师代码与我的代码完全相同,但我的代码无法打开窗口 main.py看起来像这样Python 运行PyQt代码不会打开窗口,python,pyqt,qml,pyqt5,Python,Pyqt,Qml,Pyqt5,我目前正在做一个python在线课程,这个练习的重点是PyQt。我正在使用Python 3.7和Qt5 讲师代码与我的代码完全相同,但我的代码无法打开窗口 main.py看起来像这样 import os, sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtQuick import * from PyQt5.Qt import * if __name__ == "__main__": app = Q
import os, sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtQuick import *
from PyQt5.Qt import *
if __name__ == "__main__":
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.load(QUrl.fromLocalFile("main.qml"))
sys.exit(app.exec_())
我的main.qml是
import QtQuick 2.7
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
import QtGraphicalEffects 1.0
ApplicationWindow {
id: mainWindow
height: 160
width: 300
visible: true
title: MyWindow
Item {
id: Page
visible: true
width = parent.width
Rectangle {
height: {
console.log("I am a comment")
return 160
}
color: "#ff0000"
Text{
id: mainText
text: "I am some regular text"
height: 50
width: parent.width
font.pixelSize: 12
}
Button{
id: mainButton
text: "Push Me"
anchors.top: mainText.bottom
}
}
}
}
我建议在出现问题时,从控制台/CMD运行代码,例如,当我第一次执行代码时,我收到以下消息:
file:///xxx/main.qml:16:15: Expected token `:'
错误很明显,在设置属性值时,必须使用:
而不是=
如果再次运行,则会收到以下错误消息:
file:///xxx/main.qml:14:13: IDs cannot start with an uppercase letter
file:///xxx/main.qml:11: ReferenceError: MyWindow is not defined
信息非常清楚:“页面”不能是id的名称,因为它以大写字母开头,所以解决方案是使用“页面”
如果再次运行,则会收到以下错误消息:
file:///xxx/main.qml:14:13: IDs cannot start with an uppercase letter
file:///xxx/main.qml:11: ReferenceError: MyWindow is not defined
显然,该变量不是由您应该使用的字符串或删除该赋值来定义的
代码的另一个改进是使用.py的位置信息构建绝对路由
考虑到上述情况,解决方案如下:
main.py
导入操作系统
导入系统
从PyQt5.QtCore导入QUrl
从PyQt5.QtGui导入qgui应用程序
从PyQt5.QtQml导入QQmlApplicationEngine
如果名称=“\uuuuu main\uuuuuuuu”:
app=qgui应用程序(sys.argv)
引擎=QQmlApplicationEngine()
filename=os.path.join(os.path.dirname(os.path.realpath(_文件__)),“main.qml”)
engine.load(QUrl.fromLocalFile(文件名))
sys.exit(app.exec_())
main.qml
import QtQuick 2.7
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
ApplicationWindow {
id: mainWindow
height: 160
width: 300
visible: true
title: "MyWindow"
Item {
id: page
visible: true
width: parent.width
Rectangle {
height: {
console.log("I am a comment")
return 160
}
color: "#ff0000"
Text{
id: mainText
text: "I am some regular text"
height: 50
width: parent.width
font.pixelSize: 12
}
Button{
id: mainButton
text: "Push Me"
anchors.top: mainText.bottom
}
}
}
}