如何将键 (QtCore.Qt.Key_1) 分配给 python 中的按钮。数字键盘
how to assign a key (QtCore.Qt.Key_1) to a button in python. a numeric pad
我有这个numpad,我想让每个带编号的按钮在上面的行上写上它对应的编号。例如,如果我通过按下按钮输入 1234,将在该行上显示相同的序列。我在 qt 设计器中使用 pyqt4。
上面的行是 QlineEdit,我直接在 python 脚本中导入 .ui 文件,我不使用 pyuic4 转换它。有人可以帮我找到解决方案吗?我是 python 的新手,我是 3 个月前开始的。谢谢
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)
你应该看看 Qt 文档中的 Calculator Builder example 它解释了当你不使用 uic 时如何处理 ui 加载的文件。
它是用 C++ 编写的,但展示了基本技术。
第一步是为 number-pad 创建一个 button-group。
在 Qt Designer 中,单击其中一个按钮,然后按住 Ctrl 键并单击 number-pad 中的所有其他按钮,以便它们全部 selected(总共 12 个按钮)。现在 right-click 其中一个按钮和 select 从菜单中分配到按钮组 > 新建按钮组。然后保存 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)
这将像普通计算器一样工作。如果你想要不同的行为,你当然可以 re-write handleButtons
以任何你喜欢的方式。
我有这个numpad,我想让每个带编号的按钮在上面的行上写上它对应的编号。例如,如果我通过按下按钮输入 1234,将在该行上显示相同的序列。我在 qt 设计器中使用 pyqt4。 上面的行是 QlineEdit,我直接在 python 脚本中导入 .ui 文件,我不使用 pyuic4 转换它。有人可以帮我找到解决方案吗?我是 python 的新手,我是 3 个月前开始的。谢谢
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)
你应该看看 Qt 文档中的 Calculator Builder example 它解释了当你不使用 uic 时如何处理 ui 加载的文件。
它是用 C++ 编写的,但展示了基本技术。
第一步是为 number-pad 创建一个 button-group。
在 Qt Designer 中,单击其中一个按钮,然后按住 Ctrl 键并单击 number-pad 中的所有其他按钮,以便它们全部 selected(总共 12 个按钮)。现在 right-click 其中一个按钮和 select 从菜单中分配到按钮组 > 新建按钮组。然后保存 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)
这将像普通计算器一样工作。如果你想要不同的行为,你当然可以 re-write handleButtons
以任何你喜欢的方式。