PySide2 MenuItem 中的快捷方式阻止 window 显示
The Shortcut in a PySide2 MenuItem prevents window from showing
我正在尝试使用 PySide2(Qt for Windows)和 QML 创建一个非常简单的 ApplicationWindow。
main.py
import sys
from PySide2.QtWidgets import QApplication
from PySide2.QtCore import QUrl
from PySide2.QtQml import QQmlApplicationEngine
if __name__ == "__main__":
app = QApplication(sys.argv)
url = QUrl("mainWindow.qml")
engine = QQmlApplicationEngine()
engine.load(url)
sys.exit(app.exec_())
qml 文件
import QtQuick.Controls 2.4
ApplicationWindow {
id: mainWindow
visible: true
title: "MainWindow"
width: 640
height: 480
menuBar: MenuBar {
id: menuBar
Menu {
id: editMenu
title: "&Edit"
MenuItem {
id: copyItem
text: "Copy"
// This doesn't work:
// shortcut: "Ctrl+C"
// This doesn't work either:
// shortcut: StandardKey.Copy
}
}
}
}
如图所示,代码运行并显示带有菜单栏和菜单的应用程序窗口。但是,如果我对两个快捷方式变体中的任何一个进行注释, window 根本不会显示。我不明白,为什么。我的示例遵循 Qt documentation on MenuItems.
在 QML 中有 2 种类型的项目:Qt Quick Controls 1
和 Qt Quick Controls 2
。两组都有名称相同的项目,但它们的属性不同,在您的情况下,Qt Quick Controls 2
的 MenuItem
没有快捷方式 属性,而是 Qt Quick Controls 1
(如果有的话)所以解决方案是更改导入:
import QtQuick 2.11 // <---
import QtQuick.Controls 1.4 // <---
ApplicationWindow {
id: mainWindow
visible: true
title: "MainWindow"
width: 640
height: 480
menuBar: MenuBar {
id: menuBar
Menu {
id: editMenu
title: "&Edit"
MenuItem {
id: copyItem
text: "Copy"
shortcut: StandardKey.Copy
onTriggered: console.log("copy")
}
}
}
}
我正在尝试使用 PySide2(Qt for Windows)和 QML 创建一个非常简单的 ApplicationWindow。
main.py
import sys
from PySide2.QtWidgets import QApplication
from PySide2.QtCore import QUrl
from PySide2.QtQml import QQmlApplicationEngine
if __name__ == "__main__":
app = QApplication(sys.argv)
url = QUrl("mainWindow.qml")
engine = QQmlApplicationEngine()
engine.load(url)
sys.exit(app.exec_())
qml 文件
import QtQuick.Controls 2.4
ApplicationWindow {
id: mainWindow
visible: true
title: "MainWindow"
width: 640
height: 480
menuBar: MenuBar {
id: menuBar
Menu {
id: editMenu
title: "&Edit"
MenuItem {
id: copyItem
text: "Copy"
// This doesn't work:
// shortcut: "Ctrl+C"
// This doesn't work either:
// shortcut: StandardKey.Copy
}
}
}
}
如图所示,代码运行并显示带有菜单栏和菜单的应用程序窗口。但是,如果我对两个快捷方式变体中的任何一个进行注释, window 根本不会显示。我不明白,为什么。我的示例遵循 Qt documentation on MenuItems.
在 QML 中有 2 种类型的项目:Qt Quick Controls 1
和 Qt Quick Controls 2
。两组都有名称相同的项目,但它们的属性不同,在您的情况下,Qt Quick Controls 2
的 MenuItem
没有快捷方式 属性,而是 Qt Quick Controls 1
(如果有的话)所以解决方案是更改导入:
import QtQuick 2.11 // <---
import QtQuick.Controls 1.4 // <---
ApplicationWindow {
id: mainWindow
visible: true
title: "MainWindow"
width: 640
height: 480
menuBar: MenuBar {
id: menuBar
Menu {
id: editMenu
title: "&Edit"
MenuItem {
id: copyItem
text: "Copy"
shortcut: StandardKey.Copy
onTriggered: console.log("copy")
}
}
}
}