同步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
參考文獻