在 QLCDNumber 小部件上显示数字

120 阅读2分钟

在 PyQt4 和 Python 中,我们创建了一个简单的 GUI,其中包含一个垂直滑动条和一个 QLCDNumber 小部件。我们已经设法使用一个函数访问了滑块的值。现在,我们想在 QLCDNumber 显示器中显示新生成的值(ipp)。如何做到这一点?有没有办法在 QLCDNumber 显示器中显示新值(ipp)?

huake_00152_.jpg

2、解决方案

要解决这个问题,我们需要添加一个简单的函数:

def abc(self, ip):
    self.ipp = ip - 10
    self.lcdNumber.display(self.ipp)

这个函数将收到一个整数作为参数(滑块的值),并将其减去 10,然后将结果显示在 QLCDNumber 小部件上。

我们还需要在以下位置连接滑块的 valueChanged 信号和 abc 函数:

QtCore.QObject.connect(self.verticalSlider, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.abc)

这将确保每当滑块的值改变时,abc 函数都会被调用并更新 QLCDNumber 小部件上的显示。

以下是完整的代码示例:

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(733, 498)
        self.centralWidget = QtGui.QWidget(MainWindow)
        self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
        self.verticalSlider = QtGui.QSlider(self.centralWidget)
        self.verticalSlider.setGeometry(QtCore.QRect(110, 80, 20, 331))
        self.verticalSlider.setOrientation(QtCore.Qt.Vertical)
        self.verticalSlider.setObjectName(_fromUtf8("verticalSlider"))
        self.lcdNumber = QtGui.QLCDNumber(self.centralWidget)
        self.lcdNumber.setGeometry(QtCore.QRect(320, 180, 191, 81))
        self.lcdNumber.setObjectName(_fromUtf8("lcdNumber"))
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtGui.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 733, 21))
        self.menuBar.setObjectName(_fromUtf8("menuBar"))
        MainWindow.setMenuBar(self.menuBar)
        self.mainToolBar = QtGui.QToolBar(MainWindow)
        self.mainToolBar.setObjectName(_fromUtf8("mainToolBar"))
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
        self.statusBar = QtGui.QStatusBar(MainWindow)
        self.statusBar.setObjectName(_fromUtf8("statusBar"))
        MainWindow.setStatusBar(self.statusBar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        QtCore.QObject.connect(self.verticalSlider, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.abc)


    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))

    def abc(self, ip):
        self.ipp = ip - 10
        self.lcdNumber.display(self.ipp)

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

希望这个答案对您有所帮助!

在 PyQt4 和 Python 中,我们创建了一个简单的 GUI,其中包含一个垂直滑动条和一个 QLCDNumber 小部件。我们已经设法使用一个函数访问了滑块的值。现在,我们想在 QLCDNumber 显示器中显示新生成的值(ipp)。如何做到这一点?有没有办法在 QLCDNumber 显示器中显示新值(ipp)?

## 2、解决方案

要解决这个问题,我们需要添加一个简单的函数:

```python
def abc(self, ip):
    self.ipp = ip - 10
    self.lcdNumber.display(self.ipp)
```

这个函数将收到一个整数作为参数(滑块的值),并将其减去 10,然后将结果显示在 QLCDNumber 小部件上。

我们还需要在以下位置连接滑块的 valueChanged 信号和 abc 函数:

```python
QtCore.QObject.connect(self.verticalSlider, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.abc)
```

这将确保每当滑块的值改变时,abc 函数都会被调用并更新 QLCDNumber 小部件上的显示。

以下是完整的代码示例:

```python
from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(733, 498)
        self.centralWidget = QtGui.QWidget(MainWindow)
        self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
        self.verticalSlider = QtGui.QSlider(self.centralWidget)
        self.verticalSlider.setGeometry(QtCore.QRect(110, 80, 20, 331))
        self.verticalSlider.setOrientation(QtCore.Qt.Vertical)
        self.verticalSlider.setObjectName(_fromUtf8("verticalSlider"))
        self.lcdNumber = QtGui.QLCDNumber(self.centralWidget)
        self.lcdNumber.setGeometry(QtCore.QRect(320, 180, 191, 81))
        self.lcdNumber.setObjectName(_fromUtf8("lcdNumber"))
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtGui.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 733, 21))
        self.menuBar.setObjectName(_fromUtf8("menuBar"))
        MainWindow.setMenuBar(self.menuBar)
        self.mainToolBar = QtGui.QToolBar(MainWindow)
        self.mainToolBar.setObjectName(_fromUtf8("mainToolBar"))
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
        self.statusBar = QtGui.QStatusBar(MainWindow)
        self.statusBar.setObjectName(_fromUtf8("statusBar"))
        MainWindow.setStatusBar(self.statusBar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        QtCore.QObject.connect(self.verticalSlider, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.abc)


    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))

    def abc(self, ip):
        self.ipp = ip - 10
        self.lcdNumber.display(self.ipp)

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
```

希望这个答案对您有所帮助!
````