【发布时间】:2020-10-17 01:20:23
【问题描述】:
我将组合框用作带有历史记录的简单命令行。
这是信号槽的定义:
QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Return),
self.comboBox_cmd,
activated=self.queryLine)
...和插槽:
@QtCore.pyqtSlot()
def queryLine(self):
'''
Read cmd string from widget and write to device.
'''
## comboBox can be enhanced with a history
cmd = self.comboBox_cmd.currentText()
cmds = [self.comboBox_cmd.itemText(i) for i in range(self.comboBox_cmd.count())]
if not cmds or cmds[-1] != cmd:
self.comboBox_cmd.addItem(cmd)
self.query(cmd)
这真的很好用。现在,如何在按 Enter 后标记当前项的整个文本,以便我可以根据需要替换整行?
【问题讨论】:
-
“标记”是指选择文本吗?无论如何,你为什么要使用那个功能?当您按 Enter 时,将自动添加尚未在其模型中的项目。
-
是的,我的意思是选择。确实,新项目会自动添加到列表中,这不是我的问题。我将此框用作串行设备的命令行。有时我想多次发送相同的命令(只需按回车键),有时我想发送一个全新的命令。现在,我必须先删除最后一个命令,然后才能输入 new。选择文本意味着,我可以简单地开始输入。
标签: python pyqt pyqt5 qcombobox