gpt4 book ai didi

python - 如何分配 QScintilla 快捷键

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:22 27 4
gpt4 key购买 nike

我正在尝试实现编辑器的快捷方式,但到目前为止还没有取得任何成功。

我想覆盖一些默认的 QScintilla 快捷键。我读过这篇answer ,但我不确定这是否有助于解决我的问题。

我还阅读了 Scintilla (SCI_ASSIGNCMDKEY) 文档,但我不知道应该如何以 python 方式使用它。

明确一点:

  1. 我想覆盖 QScintilla 快捷键 Ctrl+L 并使用我的自定义解决方案(将其分配给我的函数之一)。

  2. 我想将命令 SCI_LINEDELETE 分配给快捷键 Ctrl+D

这是我的想法:

    from PyQt5.Qsci import QsciScintilla
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys

class mainWindow(QMainWindow):
def __init__(self, parent = None):
super(mainWindow, self).__init__(parent)
self.initUI()

def initUI(self):
self.center_window = centerWindow(parent=self)
self.setCentralWidget(self.center_window)

class centerWindow(QWidget):
def __init__(self, parent=None):
super(centerWindow, self).__init__(parent)

self.hhEditor_te = QsciScintilla()

vbox = QVBoxLayout(self)
vbox.addWidget(self.hhEditor_te)
self.setLayout(vbox)

# 1)
# assign a key binding to this function
# self.my_shortcut

# 2)
# assign a key binding to the QScintilla command
# SCI_LINEDELETE

def my_shortcut(self):
pass
# my custom shortcut function

if __name__ == '__main__':
app = QApplication.instance()
if app is None:
app = QApplication(sys.argv)
else:
print('QApplication instance already exists: %s' % str(app))

ex = mainWindow()
ex.setGeometry(0,100,1500,600)
ex.show()
sys.exit(app.exec_())

最佳答案

QScintilla 已提供 QsciCommandSetQsciCommand用于处理内部编辑器命令的快捷方式的类。您还可以使用QShortcut为您自己的方法创建快捷方式。

class centerWindow(QWidget):
def __init__(self, parent=None):
...
commands = self.hhEditor_te.standardCommands()

command = commands.boundTo(Qt.ControlModifier | Qt.Key_L)
if command is not None:
command.setKey(0) # clear the default
command = commands.boundTo(Qt.ControlModifier | Qt.Key_D)
if command is not None:
command.setKey(0) # clear the default

command = commands.find(QsciCommand.LineDelete)
if command is not None:
command.setKey(Qt.ControlModifier | Qt.Key_D)

shortcut = QShortcut(Qt.ControlModifier | Qt.Key_L, self.hhEditor_te)
shortcut.activated.connect(self.my_shortcut)
...

def my_shortcut(self):
print('Ctrl+L')

关于python - 如何分配 QScintilla 快捷键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47622714/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com