代码之家  ›  专栏  ›  技术社区  ›  Engensmax Tim McNamara

pyQt5:将PYQT信号从浮点转换为str

  •  0
  • Engensmax Tim McNamara  · 技术社区  · 2 年前

    我有一个QObject,它以float的形式发出信号。对于QLabel,将其转换为str的最具python风格的方式是什么。setText方法?

    from PyQt5.QtCore import QObject, pyqtSignal
    from PyQt5 import uic 
    from PyQt5.QtWidgets import QMainWindow, QLabel
       
    class SerialComponent(QObject):
        value = pyqtSignal(float)
    
        def loop():
            value.emit(1.0)
    
    class Main(QMainWindow):
        def __init__(self):
            super().__init__()
            uic.loadUi("Main.ui", self)
    
            component = SerialComponent()
            
            component.value.connect(label_display.setText)
    

    这将导致

    TypeError: setText(self, str): argument 1 has unexpected type 'float'
    

    将pyqtSignal转换为str的最具Python风格的方式是什么?

    2 回复  |  直到 2 年前
        1
  •  0
  •   mugiseyebrows    2 年前

    信号有合理的签名,我建议修改插槽。

    component.value.connect(lambda value: label_display.setText("{.1f}".format(value)))
    
        2
  •  0
  •   Engensmax Tim McNamara    2 年前

    这是有效的:

    component.value.connect(label_display.setNum)