簡體   English   中英

PyQt GUI 刷新

[英]PyQt GUI Refresh

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

創建一個 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]))

你應該在調用 self.layout() 之前初始化你的布局,例如你可以在你的init函數中創建一個 QVBoxLayout,另外,我認為你可以改變

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

def __init__(self, parent = None):
    super(Fenster, self).__init__(parent)
    vl = QVBoxLayout()
    self.setLayout(vl)
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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM