同步logging訊息到 QT GUI上

同步logging訊息到 QT GUI上

之前寫python 不是做後端,就是用直接用python bash去跑,要什麼參數就直接輸入,後來給公司內部用時,發現這樣對非程式使用者來說不是很友善,所以乾脆寫了一個GUI介面,至於為什麼不用tkinter,沒為什麼單純不想XDDD

這邊預設你已經裝好QT designer,打開後請直接照我預設這樣直接建立

設定字體顏色

這邊我們選用Text Edit,來當作log的輸出控件,直接拉住向右拖拉調整到適當的大小

設定字體顏色

我們來設定一下這個Text edit的樣式參數,我們看向右邊的屬性編輯器,輸入style來快速找到這個屬性,點一下…叫出編輯器

設定字體顏色
設定字體顏色

這邊可以看到color(字體顏色)、background-color(背景顏色)

設定字體顏色
設定字體顏色
設定字體顏色
設定字體顏色

然後,我們必須再加上一個按鈕(pushbutton)

設定字體顏色

點一下剛剛的控件,在這邊把objectName 改成ADD_BTN

設定字體顏色

如同上面所做的,把TextEdit 的 objectName改成 out_log

Ctrl+R 叫出預覽視窗

設定字體顏色
設定字體顏色

寫Code時間到

安裝一下依賴

pip install pyside2

我們新建一個main.py檔案,mainqt.ui放在跟這個py檔同級資料夾下,

並引入以下依賴

import sys
from PySide2.QtWidgets import QApplication,QWidget,QCheckBox,QTextEdit, QPushButton
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import QFile
import PySide2.QtGui
import logging

先把ui建立出來,我們先建立一個class 繼承

設定字體顏色
if __name__ == '__main__':
app = QApplication(sys.argv)
app_window = MyWidget('mainqt.ui')
sys.exit(app.exec_())

到這邊執行看看,已經可以看到一個視窗跑出來了,可是到這邊沒用任何的功能

再來我們有三件事情要做
1. 建立ADD_BTN的click事件來做測試
2. 自定義一個logging.HANDLER
3. 把Mywidge的write 方法在MyNewHandler傳入,讓emit調用

自定義 logging.HANDLER

設定字體顏色

修改MyWidget

設定字體顏色
設定字體顏色

完整的程式碼,請參閱我的github

參考文獻

https://zhuanlan.zhihu.com/p/35278775