PyQt5 在文件对话框中启用 "select all" (Ctrl/Cmd+A)
PyQt5 enable "select all" (Ctrl/Cmd+A) in file dialogs
对于像这样的简单文件对话框:
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
OpenFile = QFileDialog()
filenames = OpenFile.getOpenFileNames()
print(filenames)
Shift-select 适用于 select 多个项目,但 Ctrl/Cmd+A 无效。这是 OS 的事情,还是应该在 PyQt5 中以某种方式启用它?
编辑:它不起作用的原因是因为:
https://bugreports.qt.io/browse/QTBUG-17291
Qt 需要一个带有键盘快捷键的菜单栏,而 QFileDialog 没有菜单栏,因此缺少像 "select all".
这样的快捷键
根据上面 post 中的错误报告,我发现只需在 MacOS 的菜单栏中添加一个虚拟 "Select all" 命令即可使快捷方式可用。
如果使用 .ui
文件,只需添加一个 Select All 到 Edit with ⌘A 通过 Qt Creator。
from PyQt5.QtWidgets import *
import sys
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
self.initMenuBar()
def initUI(self):
self.show()
def initMenuBar(self):
menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
editMenu = menubar.addMenu("&Edit")
actionOpen = QAction("Open", self)
actionOpen.triggered.connect(self.openFiles)
actionOpen.setShortcut("Ctrl+O")
fileMenu.addAction(actionOpen)
actionSelectAll = QAction("Select All", self)
actionSelectAll.setShortcut("Ctrl+A")
editMenu.addAction(actionSelectAll)
def openFiles(self):
filenames = QFileDialog.getOpenFileNames()
print(filenames)
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
对于像这样的简单文件对话框:
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
OpenFile = QFileDialog()
filenames = OpenFile.getOpenFileNames()
print(filenames)
Shift-select 适用于 select 多个项目,但 Ctrl/Cmd+A 无效。这是 OS 的事情,还是应该在 PyQt5 中以某种方式启用它?
编辑:它不起作用的原因是因为: https://bugreports.qt.io/browse/QTBUG-17291
Qt 需要一个带有键盘快捷键的菜单栏,而 QFileDialog 没有菜单栏,因此缺少像 "select all".
这样的快捷键根据上面 post 中的错误报告,我发现只需在 MacOS 的菜单栏中添加一个虚拟 "Select all" 命令即可使快捷方式可用。
如果使用 .ui
文件,只需添加一个 Select All 到 Edit with ⌘A 通过 Qt Creator。
from PyQt5.QtWidgets import *
import sys
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
self.initMenuBar()
def initUI(self):
self.show()
def initMenuBar(self):
menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
editMenu = menubar.addMenu("&Edit")
actionOpen = QAction("Open", self)
actionOpen.triggered.connect(self.openFiles)
actionOpen.setShortcut("Ctrl+O")
fileMenu.addAction(actionOpen)
actionSelectAll = QAction("Select All", self)
actionSelectAll.setShortcut("Ctrl+A")
editMenu.addAction(actionSelectAll)
def openFiles(self):
filenames = QFileDialog.getOpenFileNames()
print(filenames)
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())