0

我有这个小键盘,我想让每个编号的按钮在上面的行上写下它的对应数字。例如,如果我通过按下按钮输入 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)
4

2 回答 2

2

第一步是为数字键盘创建一个按钮组。

在 Qt Designer 中,单击其中一个按钮,然后按住 Ctrl 并单击数字键盘中的所有其他按钮,以便它们都被选中(总共十二个按钮)。现在右键单击其中一个按钮,然后从菜单中选择分配给按钮组 > 新建按钮组。然后保存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

于 2017-02-01T20:36:50.253 回答
0

您应该查看 Qt 文档中的Calculator Builder 示例,它解释了当您不使用 uic 时如何处理加载的 ui 文件。

它在 C++ 中,但显示了基本技术。

于 2017-01-29T20:36:42.513 回答