2016-04-05 13 views
0

このスクリプトの温度と湿度を更新しようとしています。Qtで5分ごとに更新ウィンドウ

from PyQt4.QtCore import Qt 
from PyQt4.QtGui import QWidget, QApplication, QSplitter, QLabel, QVBoxLayout, QColor 
import Adafruit_DHT 
import urllib2 
from BeautifulSoup import BeautifulSoup 



sensor_args = { '11': Adafruit_DHT.DHT11, 
       '22': Adafruit_DHT.DHT22, 
       '2302': Adafruit_DHT.AM2302 } 

humidity, temperature = Adafruit_DHT.read_retry(11, 4) 

temp = 'Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity) 

soup = BeautifulSoup(urllib2.urlopen('http://partner.mlb.com/partnerxml/gen/news/rss/bos.xml').read()) 

title = soup.find('item').title 
desc = soup.find('item').description 
url = soup.find('item').guid 


temperature = temperature * 9/5.0 + 32 
class MyWidget(QWidget): 

    def __init__(self, parent = None): 
     super(MyWidget, self).__init__(parent) 

     # create widgets 
     a = QLabel('Humidity:{:0.1f}%'.format(humidity),self) 
     a.setMinimumSize(100, 100) 
     b = QLabel('Temperature:{:0.1f}F'.format(temperature),self) 
     b.setMinimumSize(100, 100) 
     c = QLabel("Redsox News \nTitle: %s\nSummary: %s " % (title.text, desc.text), self)  
     c.setWordWrap(True) 
     c.setMinimumSize(280, 200) 



     d = QLabel("This is some bullshit wordwrap and i cant get it tow work", self) 
     d.setWordWrap(True) 
     d.setMinimumSize(180, 300) 
     for lbl in (a, b, c, d): 
      lbl.setAlignment(Qt.AlignLeft) 

     # create 2 horizontal splitters 
     h_splitter1 = QSplitter(Qt.Horizontal, self) 
     h_splitter1.addWidget(a) 
     h_splitter1.addWidget(b) 


     h_splitter2 = QSplitter(Qt.Horizontal, self) 
     h_splitter2.addWidget(c) 
     h_splitter2.addWidget(d) 

     h_splitter1.splitterMoved.connect(self.moveSplitter) 
     h_splitter2.splitterMoved.connect(self.moveSplitter) 

     self._spltA = h_splitter1 
     self._spltB = h_splitter2 

     # create a vertical splitter 
     v_splitter = QSplitter(Qt.Vertical, self) 
     v_splitter.addWidget(h_splitter1) 
     v_splitter.addWidget(h_splitter2) 

     layout = QVBoxLayout() 
     layout.addWidget(v_splitter) 
     self.setLayout(layout) 

     #color widget code 
     palette = self.palette() 
     role = self.backgroundRole() 
     palette.setColor(role, QColor('black')) 
     self.setPalette(palette) 
     a.setStyleSheet("QLabel {color:yellow}") 
     b.setStyleSheet("QLabel {color:yellow}") 
     c.setStyleSheet("QLabel {background-color: black; color:white}") 
     d.setStyleSheet("QLabel {background-color: black; color:white}") 
     #self.setWindowFlags(Qt.CustomizeWindowHint) 

     timer=self.QTimer() 
     timer.start(5000) 
     timer.timeout.connect(self.temp.update) 

    def moveSplitter(self, index, pos): 
     splt = self._spltA if self.sender() == self._spltB else self._spltB 
     splt.blockSignals(True) 
     #splt.moveSplitter(index, pos) 
     splt.blockSignals(False) 

if (__name__ == '__main__'): 
    app = QApplication([]) 
    widget = MyWidget() 
    widget.show() 
    app.exec_() 

私は、pyQtとそのすべてとその内外についてたくさん学んでいました。私はPythonにはとても新しいので、遅くなることがあります。

5分ごとに温度と湿度を更新するようにします。私はこれを試しました..

timer=self.QTimer() 
    timer.start(300) 
    timer.timeout.connect(self.temp.update) 

これは私にとってはうまくいかないようです。エラーQTimerが表示されます。

+0

あなたが編集でしたが、その行は、単にする必要がありますので、実際には、QTimerは、通常のQtのクラスです。正確なエラーメッセージ(コンソールからの複写)。 – hyde

+0

5分間の間隔は300000(ns) –

答えて

1

(私はPyQtはと本当に慣れていないよ、そう、これは間違っている場合、私に知らせてくださいと私は答えを削除します、注意してください...)

ライン

timer=self.QTimer() 

間違っている。 thisQWidgetサブクラスであり、QTimer属性を持たない。

timer = QTimer() 

あなたはまた、私はあると思うもちろんの権利輸入、必要があります:

from PyQt4.QtCore import QTimer 
+0

素晴らしいと思われます。クイック質問。スクリプトを再実行する必要なしに、tempを更新したい。どのように私はこの設定が可能ですか? –

関連する問題