PyQT自动更新标签

时间:2017-04-20 22:16:20

标签: python pyqt

标签

self.titlelabel = QLabel(self)
self.artistlabel = QLabel(self)
self.albumlabel = QLabel(self)
当我运行该方法时,UI中的

不会更新。 我的意思是,他们确实在initUI(self)的初始初始化工作,但是当我更改组合框中的项目时,不会使用新信息更新 我在initUI(self)中运行此命令,该命令连接到下拉列表/ Qcombobox self.cb.activated.connect(self.updateTrackInfo)

def currentTrackInfo(self):
    currentTrackInfoDict = {}
    currentZone = str(self.cb.currentText())
    deviceDict = self.sonosZonesCoordinatorsIP()
    for key, value in deviceDict.items():
        if value == currentZone:
            device = SoCo(key)
            track = device.get_current_track_info()
            current_title = track['title']
            current_artist  = track["artist"]
            current_album = track["album"]

    currentTrackInfoDict.update({"current_title":current_title})
    currentTrackInfoDict.update({"current_artist":current_artist})
    currentTrackInfoDict.update({"current_album":current_album})

    return currentTrackInfoDict

def updateTrackInfo(self):
    self.currentTrackInfoDict = self.currentTrackInfo()

    self.titlelabel = QLabel(self)
    self.artistlabel = QLabel(self)
    self.albumlabel = QLabel(self)

    self.titlelabel.move((PLAYICONHEIGHT-100),(WINDOWHEIGHT-230))
    self.artistlabel.move((PLAYICONHEIGHT-100),(WINDOWHEIGHT-220))
    self.albumlabel.move((PLAYICONHEIGHT-100),(WINDOWHEIGHT-250))

    self.titlelabel.setText("Title: {}".format(self.currentTrackInfoDict["current_title"]))
    print(self.currentTrackInfoDict["current_title"])
    self.artistlabel.setText("Artist: {}".format(self.currentTrackInfoDict["current_artist"]))
    self.albumlabel.setText("Album: {}".format(self.currentTrackInfoDict["current_album"]))

打印功能:print(self.currentTrackInfoDict["current_title"]) - 有效,但标签未更新。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

  1. 每次创建新的updateTrackInfo对象时,在QLabel方法中,而不是仅更新现有对象上的文本。它可能会导致问题,因为新标签与旧标签重叠(您没有删除旧标签,并且在调用updateTrackInfo后它们仍然存在)。我建议移动

    self.titlelabel = QLabel(self)
    self.artistlabel = QLabel(self)
    self.albumlabel = QLabel(self)
    
    self.titlelabel.move((PLAYICONHEIGHT-100),(WINDOWHEIGHT-230))
    self.artistlabel.move((PLAYICONHEIGHT-100),(WINDOWHEIGHT-220))
    self.albumlabel.move((PLAYICONHEIGHT-100),(WINDOWHEIGHT-250))
    
  2. 进入__init__(self)方法并仅保留标签更新updateTrackInfo方法中的代码

    1. 我建议使用currentIndexChanged QComboBox信号代替activated