91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PyQt5事件處理之定時在控件上顯示信息的示例分析

發布時間:2021-06-26 09:23:56 來源:億速云 閱讀:231 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關PyQt5事件處理之定時在控件上顯示信息的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

有時候為了體現延時效果,或者是多事件處理,需要在窗口的文本編輯框或者表格等控件中,延遲幾秒或每隔幾秒顯示輸出一段數據,又或者可以說是每隔幾秒執行下一行代碼!要實現這種效果,關鍵的兩個方法就是time.sleep()processEvents(),具體看如下代碼:

from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.QtWidgets import *
import time
class Ui_MainWindow(object):
 def setupUi(self, MainWindow):
  MainWindow.setObjectName("MainWindow")
  MainWindow.resize(390, 500)
  self.centralwidget = QtWidgets.QWidget(MainWindow)
  self.centralwidget.setObjectName("centralwidget")
  self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
  self.gridLayout_2.setObjectName("gridLayout_2")
  self.gridLayout = QtWidgets.QGridLayout()
  self.gridLayout.setObjectName("gridLayout")
  self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
  self.textEdit.setObjectName("textEdit")
  self.gridLayout.addWidget(self.textEdit, 1, 1, 1, 1)
  self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
  self.tableWidget.setObjectName("tableWidget")
  self.tableWidget.setColumnCount(3)
  self.tableWidget.setRowCount(4)
  item = QtWidgets.QTableWidgetItem()
  self.tableWidget.setVerticalHeaderItem(0, item)
  item = QtWidgets.QTableWidgetItem()
  self.tableWidget.setVerticalHeaderItem(1, item)
  item = QtWidgets.QTableWidgetItem()
  self.tableWidget.setVerticalHeaderItem(2, item)
  item = QtWidgets.QTableWidgetItem()
  self.tableWidget.setVerticalHeaderItem(3, item)
  item = QtWidgets.QTableWidgetItem()
  self.tableWidget.setHorizontalHeaderItem(0, item)
  item = QtWidgets.QTableWidgetItem()
  self.tableWidget.setHorizontalHeaderItem(1, item)
  item = QtWidgets.QTableWidgetItem()
  self.tableWidget.setHorizontalHeaderItem(2, item)
  self.gridLayout.addWidget(self.tableWidget, 0, 1, 1, 1)
  self.pushButton = QtWidgets.QPushButton(self.centralwidget)
  self.pushButton.setMaximumSize(QtCore.QSize(200, 16777215))
  self.pushButton.setObjectName("pushButton")
  self.gridLayout.addWidget(self.pushButton, 2, 1, 1, 1)
  self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
  MainWindow.setCentralWidget(self.centralwidget)
  self.menubar = QtWidgets.QMenuBar(MainWindow)
  self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 18))
  self.menubar.setObjectName("menubar")
  MainWindow.setMenuBar(self.menubar)
  self.statusbar = QtWidgets.QStatusBar(MainWindow)
  self.statusbar.setObjectName("statusbar")
  MainWindow.setStatusBar(self.statusbar)
  # 表格屬性設置
  self.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
  # 【開始】按鈕
  self.pushButton.clicked.connect(self.pushButton_Clicked)
  self.retranslateUi(MainWindow)
  QtCore.QMetaObject.connectSlotsByName(MainWindow)
 # 設置每隔幾秒輸出數據
 def pushButton_Clicked(self):
  self.textEdit.setText("獲取基金數據中...")
  # 刷新頁面
  QApplication.processEvents()
  item = [["110003", "易方達上證50", "-1.97%"], ["005918", "天弘滬深300", "-3.15%"], ["001513", "易方達信息產業", "-4.69%"]]
  for i in range(3):
   # 每隔兩秒執行一次以下代碼,直到循環結束
   time.sleep(2)
   self.textEdit.append("獲取基金" + item[i][1] + "\n...")
   for j in range(3):
    self.tableWidget.setItem(i, j, QtWidgets.QTableWidgetItem(item[i][j]))
   # 刷新頁面
   QtWidgets.QApplication.processEvents()
 def retranslateUi(self, MainWindow):
  _translate = QtCore.QCoreApplication.translate
  MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
  item = self.tableWidget.verticalHeaderItem(0)
  item.setText(_translate("MainWindow", "1"))
  item = self.tableWidget.verticalHeaderItem(1)
  item.setText(_translate("MainWindow", "2"))
  item = self.tableWidget.verticalHeaderItem(2)
  item.setText(_translate("MainWindow", "3"))
  item = self.tableWidget.verticalHeaderItem(3)
  item.setText(_translate("MainWindow", "4"))
  item = self.tableWidget.horizontalHeaderItem(0)
  item.setText(_translate("MainWindow", "基金編號"))
  item = self.tableWidget.horizontalHeaderItem(1)
  item.setText(_translate("MainWindow", "基金名稱"))
  item = self.tableWidget.horizontalHeaderItem(2)
  item.setText(_translate("MainWindow", "基金凈值"))
  self.pushButton.setText(_translate("MainWindow", "開始"))

if __name__ == "__main__":
 app = QApplication(sys.argv)
 MainWindow = QtWidgets.QMainWindow()
 ui = Ui_MainWindow()
 ui.setupUi(MainWindow)
 MainWindow.show()
 sys.exit(app.exec_())

其中關鍵代碼如下,需要設計一個循環才能實現每隔2秒執行一次循環中的代碼,至于為何要調用兩次刷新頁面的函數,是因為每調用一次QApplication.processEvents()就會刷新頁面,將之前在窗口顯示數據的代碼的效果全部顯示到窗口中,而在循環之前有一個輸出到文本框的文字需要首先顯示,所以在循環之前刷新一次頁面,否則就會和循環第一次的內容一起出現!而第二次調用這個函數則是將循環中每隔2秒執行的那幾行代碼產生的效果顯示出來,其中輸出文本框采用append()是為了不覆蓋之前的文字。

 # 設置每隔幾秒輸出數據
 def pushButton_Clicked(self):
  self.textEdit.setText("獲取基金數據中...")
  # 刷新頁面
  QApplication.processEvents()
  item = [["110003", "易方達上證50", "-1.97%"], ["005918", "天弘滬深300", "-3.15%"], ["001513", "易方達信息產業", "-4.69%"]]
  for i in range(3):
   # 每隔兩秒執行一次以下代碼,直到循環結束
   time.sleep(2)
   self.textEdit.append("獲取基金" + item[i][1] + "\n...")
   for j in range(3):
    self.tableWidget.setItem(i, j, QtWidgets.QTableWidgetItem(item[i][j]))
   # 刷新頁面
   QtWidgets.QApplication.processEvents()

運行結果如下圖所示(內容以基金的凈值為例,以此紀念我這段艱難入坑基金的歲月,嗚嗚嗚,跌穿谷底嚕):因為不是動圖,實際顯示的效果是:點擊【開始】按鈕后,首先文本框顯示第一行文字,然后隔2秒后顯示第二三行文字,同時在表格中顯示第一行的信息,再隔2秒就是文本框第四五行文字以及表格第二行信息,以此類推,直到循環結束!

PyQt5事件處理之定時在控件上顯示信息的示例分析

雖然PyQt5中有自己的定時器QTimer,但是我暫時沒有想到如何用它來實現上述的效果,因此就沒有使用該方法,如有更好的方法歡迎大神指點!

感謝各位的閱讀!關于“PyQt5事件處理之定時在控件上顯示信息的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会宁县| 东安县| 孝感市| 临颍县| 宁陵县| 丰顺县| 砀山县| 如东县| 浦城县| 太白县| 靖安县| 灵台县| 九江市| 河北省| 封开县| 永和县| 红原县| 龙胜| 双城市| 宁南县| 平谷区| 青田县| 顺昌县| 大丰市| 常州市| 新野县| 抚顺县| 伊吾县| 都兰县| 巴塘县| 永城市| 闵行区| 吴忠市| 南乐县| 武义县| 和政县| 琼海市| 霍林郭勒市| 新津县| 根河市| 丽江市|