如何将键(QtCore.Qt.Key_1)分配给python中的按钮。数字键盘
Posted
技术标签:
【中文标题】如何将键(QtCore.Qt.Key_1)分配给python中的按钮。数字键盘【英文标题】:how to assign a key (QtCore.Qt.Key_1) to a button in python. a numeric pad 【发布时间】:2017-01-29 19:56:32 【问题描述】:我有这个numpad,我想让每个编号的按钮在上面的行上写下它的对应编号。例如,如果我通过按下按钮输入 1234,则将在该行上显示相同的序列。我将 pyqt4 与 qt 设计器一起使用。 上面的行是 QlineEdit,我直接在 python 脚本中导入 .ui 文件,我不使用 pyuic4 转换它。有人可以帮我找到解决方案吗?我是 3 个月前开始的 python 新手。谢谢
class MyWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QWidget.__init__(self)
file_path = os.path.abspath("ui/sales_window.ui")
uic.loadUi(file_path, self)
【问题讨论】:
请编辑您的问题并添加完整的 ui 文件。 我上传不了,30000+字符,这个页面有30k的限制 好的。您可以改用pastebin 链接。 pastebin.com/ujsPewCa这里是ui文件 【参考方案1】:第一步是为数字键盘创建一个按钮组。
在 Qt Designer 中,单击其中一个按钮,然后按住 Ctrl 并单击数字键盘中的所有其他按钮,以便它们都被选中(总共十二个按钮)。现在右键单击其中一个按钮,然后从菜单中选择 Assign to button group > New button group。然后保存ui文件。
您现在可以在主脚本中添加一个处理程序来控制按钮:
class MyWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QWidget.__init__(self)
file_path = os.path.abspath("aaa.ui")
uic.loadUi(file_path, self)
self.barcode_src_line.setReadOnly(True)
self.buttonGroup.buttonClicked.connect(self.handleButtons)
def handleButtons(self, button):
char = str(button.text())
if char == 'C':
self.barcode_src_line.clear()
else:
text = str(self.barcode_src_line.text()) or '0'
if char != '.' or '.' not in text:
if text != '0' or char == '.':
text += char
else:
text = char
self.barcode_src_line.setText(text)
这将像普通计算器一样工作。如果你想要不同的行为,你当然可以用你喜欢的任何方式重写handleButtons
。
【讨论】:
1000 谢谢,如果你经过我的小镇,我会给你买些饮料。代码按我的需要工作。我很感激【参考方案2】:您应该查看 Qt 文档中的 Calculator Builder example,它解释了当您不使用 uic 时如何处理加载的 ui 文件。
它在 C++ 中,但显示了基本技术。
【讨论】:
感谢您的链接,问题是我不懂 C++,我会尝试研究您的链接,但如果您能从 python 中的示例开始,我会很感激。顺便说一句,链接显示一个计算器,我不需要计算器这个键盘将输入一个数字字符串。以上是关于如何将键(QtCore.Qt.Key_1)分配给python中的按钮。数字键盘的主要内容,如果未能解决你的问题,请参考以下文章