[英]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.