PyQt GUI刷新

时间:2018-04-09 07:54:15

标签: python pyqt refresh pyqt5

我的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_())

3 个答案:

答案 0 :(得分:0)

创建一个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]))

答案 1 :(得分:0)

你应该在调用self.layout()之前初始化你的布局,例如你可以在 init 函数中创建一个QVBoxLayout,另外,我认为你可以改变

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

def __init__(self, parent = None):
    super(Fenster, self).__init__(parent)
    vl = QVBoxLayout()
    self.setLayout(vl)

答案 2 :(得分:0)

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()