-1

“sunset_time = time(18,30,00)”行产生一个 'QTime' object is NOT callable 错误......我做错了什么?......我的应用程序应该获取并显示当前时间然后设置日落时间然后从日落时间中减去当前时间,以获得并显示“距离日落还有几分钟”

    timer = QtCore.QTimer(self)
    time= QtCore.QTime.currentTime()
    timer.timeout.connect(self.showlcd)
    timer.timeout.connect(self.showlcd_2)
    timer.start(1000)
    self.showlcd()
      

  def showlcd(self):
    time = QtCore.QTime.currentTime()
    current = time.toString('hh:mm')
    self.ui.lcdNumber.display(current)

  def showlcd_2(self):
    time = QtCore.QTime.currentTime()
    sunset = time.toString('18:30')
    current_time =(time.hour,time.minute,time.second)
    sunset_time = time(18,30,00)
    TillSunset = sunset_time-current_time
    minutesTillSunset=divmod(TillSunset.seconds, 60)
    self.ui.lblTillSunset.setText("minutesTillSunset.%s" %minutesTillSunset)
    self.ui.lcdNumber_2.display(sunset)

  def showTimeTillSunset(self):
    self.ui.lblTillSunset.display(TillSunset)
    pixmapTwo = QPixmap(os.getcwd() + '/sunset.jpg')
    lblSunsetPic.setPixmap(pixmapTwo)
    lblSunsetPic.show
4

2 回答 2

0

发生错误是因为无法调用实例化QTime对象本身。time在以下语句中sunset_time = time(18,30,00),您使用三个参数调用实例化的 Qtime 对象:18,30,00。但是你只能在构造函数上使用它,你正确的做法是:sunset_time = QtCore.QTime(18, 30, 00)
所以要回答你的问题,发生错误是因为你调用了一个实例化的对象而不是它的构造函数。查看其他答案以获取有关您的解决方案的一般提示:)

于 2020-09-23T11:19:27.940 回答
0

我不明白执行以下操作的逻辑:

time = QtCore.QTime.currentTime()
# ...
sunset_time = time(18,30,00)

正确的做法是从日落中创建 QTime 并“减去”它,这相当于知道了可以通过 secsTo 方法获得的那些 QTime 之间的时间:

def showlcd_2():
    current_time = QtCore.QTime.currentTime()
    sunset_time = QtCore.QTime(18, 30, 00)

    m, s = divmod(current_time.secsTo(sunset_time), 60)

    self.ui.lblTillSunset.setText(("minutesTillSunset.%s" % m)
    self.ui.lcdNumber_2.display(sunset_time.toString("hh:mm"))
于 2020-09-23T09:20:22.110 回答