温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - How to use while loop in this pyqt5 window
pyqt5 python

python - 如何在此pyqt5窗口中使用while循环

发布于 2020-03-27 16:01:37

这是我的第一个问题。我调查了一些类似的问题,但是它对我自己的代码没有真正的帮助(或者我不确定是否可以对我的代码应用可能的解决方案)。

我有这段代码在运行时在窗口中显示时间,但它不会更新,如果我想查看当前时间,我必须再次运行它。我想在某处包括while循环,但我无法。通常,当我使用漂亮的汤或 selenium 从网站上获取数据时,我能够将它们放入while循环中并使其正常运行而没有任何问题,但是我无法使其在pyqt5窗口中发生。我该怎么办?

import sys
import time
from PyQt5 import QtWidgets,QtCore
import requests
from bs4 import BeautifulSoup

class Window(QtWidgets.QWidget):

    def __init__(self):
        super().__init__()
        self.init_ui()
    def  init_ui(self):
        self.textfield = QtWidgets.QLabel("")
        sonuc = self.gettime()

        v_box = QtWidgets.QVBoxLayout()

        v_box.addWidget(self.textfield)
        v_box.addStretch()

        h_box = QtWidgets.QHBoxLayout()

        h_box.addStretch()
        h_box.addLayout(v_box)
        h_box.addStretch()

        self.setLayout(h_box)
        self.setWindowTitle("Time")
        self.show()
    def gettime(self):

        url = "https://onlinesaat.web.tr/saat-kac/"
        a = requests.get(url)
        b = a.content
        soup = BeautifulSoup(b,"html.parser")

        for i in soup.find_all("span",{"id":"lbl-time"}):
            self.textfield.setText(i.text)

app = QtWidgets.QApplication(sys.argv)
window = Window()
sys.exit(app.exec_())

查看更多

查看更多

提问者
mertyilmazdeu
被浏览
191
ryanhz 2020-01-31 16:48

使用QTimer

例如,这每隔1000毫秒(1s)调用一次gettime函数

...
def  init_ui(self):
    self.textfield = QtWidgets.QLabel("")
    timer = QtCore.QTimer(self)
    timer.timeout.connect(self.gettime)
    timer.start(1000)