Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在PyQt4中打印QLCD小部件的更改值?_Python_Pyqt4 - Fatal编程技术网

Python 如何在PyQt4中打印QLCD小部件的更改值?

Python 如何在PyQt4中打印QLCD小部件的更改值?,python,pyqt4,Python,Pyqt4,我对PyQt4有点陌生,我一直在开发简单的GUI,它有一个QDial和LCD小部件。我使用了信号和插槽技术,即当QDial改变时,它的值将显示在LCD小部件上。 类似地,每次QDial改变时,我都想在终端上打印LCD值。我该怎么做 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'mainwindow.ui' # # Created by: PyQt4 UI code generator

我对PyQt4有点陌生,我一直在开发简单的GUI,它有一个QDial和LCD小部件。我使用了信号和插槽技术,即当QDial改变时,它的值将显示在LCD小部件上。 类似地,每次QDial改变时,我都想在终端上打印LCD值。我该怎么做

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(610, 404)
        MainWindow.setStatusTip(_fromUtf8(""))

        MainWindow.setTabShape(QtGui.QTabWidget.Rounded)
        self.centralWidget = QtGui.QWidget(MainWindow)
        self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
        self.dial_1 = QtGui.QDial(self.centralWidget)
        self.dial_1.setGeometry(QtCore.QRect(390, 10, 101, 91))
        font = QtGui.QFont()
        font.setStrikeOut(False)
        self.dial_1.setFont(font)
        self.dial_1.setMouseTracking(False)
        self.dial_1.setFocusPolicy(QtCore.Qt.ClickFocus)
        self.dial_1.setStatusTip(_fromUtf8(""))
        self.dial_1.setWhatsThis(_fromUtf8(""))
        self.dial_1.setAccessibleDescription(_fromUtf8(""))
        self.dial_1.setAutoFillBackground(False)
        self.dial_1.setSingleStep(1)
        self.dial_1.setPageStep(10)
        self.dial_1.setProperty("value", 0)
        self.dial_1.setSliderPosition(0)
        self.dial_1.setWrapping(False)
        self.dial_1.setNotchTarget(3.7)
        self.dial_1.setNotchesVisible(True)
        self.dial_1.setObjectName(_fromUtf8("dial_1"))
        self.lcdNumber_1 = QtGui.QLCDNumber(self.centralWidget)
        self.lcdNumber_1.setGeometry(QtCore.QRect(500, 40, 81, 41))
        self.lcdNumber_1.setFrameShape(QtGui.QFrame.Panel)
        self.lcdNumber_1.setLineWidth(2)
        self.lcdNumber_1.setDigitCount(4)
        self.lcdNumber_1.setSegmentStyle(QtGui.QLCDNumber.Flat)
        self.lcdNumber_1.setObjectName(_fromUtf8("lcdNumber_1"))
        self.label_1 = QtGui.QLabel(self.centralWidget)
        self.label_1.setGeometry(QtCore.QRect(390, 100, 111, 17))
        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)
        self.label_1.setFont(font)
        self.label_1.setObjectName(_fromUtf8("label_1"))
        self.dial_2 = QtGui.QDial(self.centralWidget)
        self.dial_2.setGeometry(QtCore.QRect(390, 120, 101, 91))
        self.dial_2.setFocusPolicy(QtCore.Qt.ClickFocus)
        self.dial_2.setNotchesVisible(True)
        self.dial_2.setObjectName(_fromUtf8("dial_2"))
        self.label_2 = QtGui.QLabel(self.centralWidget)
        self.label_2.setGeometry(QtCore.QRect(390, 210, 111, 17))
        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)
        self.label_2.setFont(font)
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.lcdNumber_2 = QtGui.QLCDNumber(self.centralWidget)
        self.lcdNumber_2.setEnabled(True)
        self.lcdNumber_2.setGeometry(QtCore.QRect(500, 150, 81, 41))
        font = QtGui.QFont()
        font.setPointSize(18)
        font.setBold(True)
        font.setWeight(75)
        self.lcdNumber_2.setFont(font)
        self.lcdNumber_2.setFrameShape(QtGui.QFrame.Panel)
        self.lcdNumber_2.setFrameShadow(QtGui.QFrame.Raised)
        self.lcdNumber_2.setLineWidth(2)
        self.lcdNumber_2.setMidLineWidth(0)
        self.lcdNumber_2.setDigitCount(4)
        self.lcdNumber_2.setMode(QtGui.QLCDNumber.Dec)
        self.lcdNumber_2.setSegmentStyle(QtGui.QLCDNumber.Flat)
        self.lcdNumber_2.setObjectName(_fromUtf8("lcdNumber_2"))
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtGui.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 611, 25))
        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.QObject.connect(self.dial_1, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.lcdNumber_1.display)
        QtCore.QObject.connect(self.dial_2, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.lcdNumber_2.display)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
        self.label_1.setText(_translate("MainWindow", "Linear Velocity", None))
        self.label_2.setText(_translate("MainWindow", "Angular Velocity", None))


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_())

您可以连接自己的函数来获取值,并使用print来显示它

    QtCore.QObject.connect(self.dial_1, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.lcdNumber_1.display)
    # connect own function  
    QtCore.QObject.connect(self.dial_1, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.my_function)

def my_function(self, value):
    print(value)
第二个QDial也是如此

您甚至可以直接使用print而不创建自己的函数,因为print将获得值

    QtCore.QObject.connect(self.dial_1, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), print)
编辑:如评论中提到的@musicamante-本版本

 SIGNAL(..., print)
将只在Python 3中工作,因为在Python 2中打印是不起作用的

或者您必须在Python 2中使用

from __future__ import print_function

您可以连接自己的函数,该函数将使用print在控制台中显示它。值得一提的是,除非您使用的是非常旧的PyQt4版本,该版本本身非常旧,并且被认为已经过时,因为[Py]Qt5已经过时近7年了,您可以使用10多年前发布的PyQt5引入的更简单的版本,使用更简单的sintax object.signal.connectslot;在您的情况下,self.dial_1.valueChanged.connectself.lcdNumber_1.display。也就是说,如果您没有因为严重的原因而使用[Py]Qt4,我强烈建议您直接使用PyQt5。此外,您真的不应该编辑pyuic的输出,而是使用您自己的python文件作为程序的逻辑,而不使用生成的GUI-py文件:如果您需要编辑GUI,您将很难更新代码。更多信息/示例。这可能看起来很复杂,也很难理解,但是一旦你了解了它的工作原理,这是值得的,并且确实有助于你开发你的应用程序。由于OP使用的是相当旧的PyQt4,我们可以假设他/她可能也在使用Python 2。[关于您的编辑]或者只是创建一个充当插槽的方法,其中包含您想要的任何打印语句:-@musicamante您可以创建答案并比我更好地描述它:一个,简短而全面的答案比两个几乎相同的答案要好,对OP和将来可能阅读这个问题的人都好。我强烈希望将编辑工作留给回答者。第三方编辑应避免过多地修改答案的实质内容,无论该编辑有多有用。