0
これは私の以前の投稿の編集版です。私は家の窓にデジタル時計を置こうとしています。値を更新するのが難しいです。私は別のクラスで@pyqtSlot()メソッドを呼び出したチュートリアル1を見ましたが、私はメインウィンドウクラスで作業しているので、これを呼び出すことができず、時計はまったく表示されませんでした。以下、次のコードは、現在の時刻が表示されますが、クロックが更新されません。PyQt4のデジタル時計ウィジェットのアップデートに関する問題 - スロットと信号の呼び出し
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50,50,500,300)
self.home()
def home(self):
lcdNumber = QLCDNumber(self)
timer = QTimer()
lcdNumber.setDigitCount(8)
self.showTime(lcdNumber)
lcdNumber.connect(timer,SIGNAL("timeout()"),lcdNumber,SLOT("showTime()"))
timer.start(1000)
self.show()
@pyqtSlot()
def showTime(self,lcdNumber):
lcdNumber.display(QTime.currentTime().toString("hh:mm:ss"))
def run():
app=QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())
run()
あなたのソリューションは完全に正しいです - 私は確かにそれを「回避する」とは言いません。それが(元の例と比較して)動作する理由は、 'lcd'と' timer'への参照を保持しているからです。古いスタイルの信号とスロットの接続(これは非常にエラーを起こす可能性があります)を避けたことも良いことです。 – ekhumoro
あなたのコメントに感謝しています。このアプローチは、私が求めていたことももっと簡単です。 – alkey