每隔5分钟在Q中更新一次窗口

2024-09-30 05:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想更新这个脚本中的温度和湿度。在

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分钟更新一次温度和湿度。我试过这个。。在

^{pr2}$

这对我似乎不管用。我得到错误no attribute QTimer。在


Tags: importselfadafruitqtcolortemperaturesoupsplitter
1条回答
网友
1楼 · 发布于 2024-09-30 05:24:46

(请注意,我对pyqt并不熟悉,因此如果这是错误的,请告诉我,我会删除答案…)

线

timer=self.QTimer()

是错误的。this是一个QWidget子类,它没有QTimer属性。事实上,QTimer是一个常规的Qt类,因此该行应该是:

^{pr2}$

当然,您还需要正确的导入,我认为是:

from PyQt4.QtCore import QTimer

相关问题 更多 >

    热门问题