摘要:實時追加顯示定義一個發(fā)送的信號通過類成員對象定義信號處理業(yè)務(wù)邏輯下面將輸出重定向到中實時顯示開始創(chuàng)建線程連接信號開始線程將當(dāng)前時間輸出到文本框目前遇到的問題是使用上遇到很多坑像是菜單工具欄各個按鈕之間怎么去綁定特定的槽各種報錯然后現(xiàn)在想
實時追加顯示
code
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtCore import * from PyQt5.QtWidgets import * import time import sys class EmittingStream(QtCore.QObject): textWritten = QtCore.pyqtSignal(str) #定義一個發(fā)送str的信號 def write(self, data): self.textWritten.emit(str(data)) class BackendThread(QThread): # 通過類成員對象定義信號 update_date = pyqtSignal(str) # 處理業(yè)務(wù)邏輯 def run(self): while True: data = QDateTime.currentDateTime() currTime = data.toString("yyyy-MM-dd hh:mm:ss") self.update_date.emit( str(currTime) ) time.sleep(1) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralWidget = QtWidgets.QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") self.gridLayout = QtWidgets.QGridLayout(self.centralWidget) self.gridLayout.setObjectName("gridLayout") self.pushButton = QtWidgets.QPushButton(self.centralWidget) self.pushButton.setObjectName("pushButton") self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1) self.textEdit = QtWidgets.QTextEdit(self.centralWidget) self.textEdit.setObjectName("textEdit") self.gridLayout.addWidget(self.textEdit, 1, 0, 1, 1) MainWindow.setCentralWidget(self.centralWidget) #下面將輸出重定向到textEdit中 sys.stdout = EmittingStream(textWritten=self.handleDisplay) sys.stderr = EmittingStream(textWritten=self.handleDisplay) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "實時顯示")) self.pushButton.setText(_translate("MainWindow", "開始")) def initUI(self): # 創(chuàng)建線程 self.backend = BackendThread() # 連接信號 self.backend.update_date.connect(self.handleDisplay) # 開始線程 self.backend.start() # 將當(dāng)前時間輸出到文本框 def handleDisplay(self, data): cursor = self.textEdit.textCursor() cursor.movePosition(QtGui.QTextCursor.End) # self.textEdit.setText(data) cursor.insertText(data + " ") self.textEdit.setTextCursor(cursor) self.textEdit.ensureCursorVisible() if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() win = Ui_MainWindow() win.setupUi(MainWindow) win.initUI() MainWindow.show() sys.exit(app.exec_())
result
目前遇到的問題是qt designer使用上遇到很多坑,像是菜單,工具欄各個按鈕之間怎么去綁定特定的槽,各種報錯. 然后現(xiàn)在想到一種方式是,qt designer純用來設(shè)計頁面,信號與槽之間的綁定自己寫,修修補補. 參考https://www.cnblogs.com/topsh...
http://www.broadview.com.cn/a...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42058.html
摘要:實時在文本框顯示內(nèi)容引入這個函數(shù)綁定定時器自動執(zhí)行在類中定義一個定時器并在構(gòu)造函數(shù)中設(shè)置啟動及其信號和槽設(shè)置計時間隔并啟動計時結(jié)束調(diào)用方法注意不要加引入這個參考 qt designer使用 開始 新建項目(eric6 項目) 新建窗體(eric6 窗體) 編輯界面(轉(zhuǎn)到qt designer) 保存 編譯窗體(轉(zhuǎn)到eric6 窗體) 運行(查看頁面效果) 頁面縮放效果(qt d...
摘要:最近想做一個實用的圖形界面用于查看實時日志本來是準(zhǔn)備用開發(fā)原本以為功能簡單應(yīng)該很好上手然而在嘗試了幾次之后徹底放棄了這個想法首先太老了看上去像是上個世紀(jì)的應(yīng)用界面丑陋這是其一如果只是這樣還可以接受然而實際編寫過程中發(fā)現(xiàn)也不是那么友好優(yōu)質(zhì)文檔 最近想做一個實用的圖形界面用于查看實時日志,本來是準(zhǔn)備用tkinter開發(fā),原本以為功能簡單應(yīng)該很好上手,然而,在嘗試了幾次之后,徹底放棄了這個想...
摘要:如果編輯了按鈕那么接下來就是通過按鈕觸發(fā)某個動作首先右擊窗體生成對話框代碼綁定按鈕接著在代碼欄就會看到生成的文件在中創(chuàng)建綁定再次編譯打開文件發(fā)現(xiàn)已經(jīng)綁定服務(wù)日志運行中播放暫停退出實時日志服務(wù)器開始服務(wù)密碼退出狀態(tài)信息類 如果編輯了按鈕, 那么接下來就是通過按鈕觸發(fā)某個動作 首先右擊窗體,生成對話框代碼 showImg(https://segmentfault.com/img/bVbem...
摘要:工具可以直接使用方式安裝和的環(huán)境配置使用集成開發(fā)工具的小白,在安裝庫以后,還要對和進(jìn)行環(huán)境配置,將其集成到中。如果小白的或安裝在其他路徑下,則從對應(yīng)的目錄找到,或者在資源管理器中搜索文件找到安裝路徑。 ...
閱讀 1809·2021-11-24 10:21
閱讀 1219·2021-09-22 15:25
閱讀 3180·2019-08-30 15:55
閱讀 720·2019-08-30 15:54
閱讀 3468·2019-08-30 14:20
閱讀 1668·2019-08-30 14:06
閱讀 646·2019-08-30 13:11
閱讀 3157·2019-08-29 16:43