PyQt GUI刷新

2024-10-04 05:25:30 发布

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

我的qt GUI有问题。 我想每秒钟更新/刷新我的GUI,如果列表中有元素,可以添加一个新的文本行或一个新按钮。看过很多关于线程和qtimer的帖子,但对我的GUI不太了解。所以我想更新所有的东西,或者只想添加新的,如果电话挂断了就必须这样删除。只是添加代码时没有尝试刷新,因为它们无法正常工作。如果你能帮我的话,会帮我很多忙的:) 谢谢

    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    from PyQt5 import *
    from PyQt5.QtCore import *
    import time
    import CTI
    import APIConnect



    class Fenster(QWidget):
        def __init__(self):
            super().__init__()
            self.initMe()

        def initMe(self):
            i = 1
            box = QVBoxLayout(self)
            self.setLayout(box)
            Rufnummer = 0
            result = APIConnect.list_users()
            anrufe = APIConnect.anrufe()
            for e in result:
                self.User = box.addWidget(QPushButton(e[6]+"\n"+e[7]))
            box.addStretch(1)
            self.setGeometry(50, 50, 200, 750)
            self.setWindowTitle("CTI")
            self.setWindowIcon(QIcon("telefon.png"))
            self.show()

    app = QApplication(sys.argv)
    w = Fenster()
    sys.exit(app.exec_())

Tags: fromimportselfboxinitdefsysgui
3条回答

您应该在调用之前初始化布局自布局(),例如,您可以在您的init函数中创建一个QVBoxLayout,此外,我认为您可以更改

def __init__(self):
    super().__init__()

^{pr2}$

创建一个QTimer并调用这个槽

def ontimeout(self):
    curLayout = self.layout()
    widgetItem = curLayout.takeAt(0)
    while widgetItem != None:
        curLayout.removeWidget(widgetItem.widget())
        widgetItem = curLayout.takeAt(0)
        result = APIConnect.list_users()
    for e in result:
        curLayout.addWidget(QPushButton(e[6]+"\n"+e[7]))
def initMe(self):
    i = 1
    box = QVBoxLayout(self)
    self.setLayout(box)
    Rufnummer = 0
    result = APIConnect.list_users()
    anrufe = APIConnect.anrufe()
    for e in result:
        self.User = box.addWidget(QPushButton(e[6]+"\n"+e[7]))
    box.addStretch(1)
    self.setGeometry(50, 50, 200, 750)
    self.setWindowTitle("CTI")
    self.setWindowIcon(QIcon("telefon.png"))
    #       -add this          
    self.__timer = QTimer()
    self.__timer.timeout.connect(self.ontimeout)
    self.__timer.start(1000)
    #                     -
    self.show()

相关问题 更多 >