Pyslvs 開發進度:
- 嵌入 Console 窗格
- 顏色預覽
- 載入後資訊提示
- XML 支援滑鼠拖入開啟
Pyslvs 開發進度
嵌入 Console 窗格
將原本顯示在終端機的 Log 資訊都搬到 GUI 中,這樣 Windows 包裝時可以選擇不要顯示文字提示(但是會失去 Help 功能)。
不過主要目的是複製輸出文字會比較快速,不用切換到 Command line 或 Console。
要在 Qt 中將 stdout、stderr 或 logging 輸出到 QTextBrowser 上,可以撰寫以下檔案:
# -*- coding: utf-8 -*- from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtGui import * import sys, logging class QtHandler(logging.Handler): def __init__(self): logging.Handler.__init__(self) def emit(self, record): record = self.format(record) if record: XStream.stdout().write('{}\n'.format(record)) logger = logging.getLogger(__name__) handler = QtHandler() handler.setFormatter(logging.Formatter("%(asctime)s | %(message)s")) logger.addHandler(handler) class XStream(QObject): _stdout = None _stderr = None messageWritten = pyqtSignal(str) def flush(self): pass def fileno(self): return -1 def write(self, msg): if not self.signalsBlocked(): self.messageWritten.emit(msg) @staticmethod def stdout(): if not XStream._stdout: XStream._stdout = XStream() sys.stdout = XStream._stdout return XStream._stdout @staticmethod def stderr(): if not XStream._stderr: XStream._stderr = XStream() sys.stderr = XStream._stderr return XStream._stderr
設一個方法讓 QTextBrowser 接收訊息並顯示,每次更新先捲到最尾端,插入文字後再捲到底一次。
接著,在 QTextBrowser 的視窗中為其連接信號槽:
#In the window XStream.stdout().messageWritten.connect(self.appendToConsole) XStream.stderr().messageWritten.connect(self.appendToConsole) @pyqtSlot(str) def appendToConsole(self, log): self.consoleWidgetBrowser.moveCursor(QTextCursor.End) self.consoleWidgetBrowser.insertPlainText(log) self.consoleWidgetBrowser.moveCursor(QTextCursor.End)
顏色預覽
在 graphics.color 檔案中新增了新的字典,可以回傳一個 20x20 對應顏色的 QIcon 方塊,用於預覽正確顯示的色調。
def colorIcons(): colors = colorlist() for name, color in colors.items(): colorBlock = QPixmap(QSize(*([20]*2))) colorBlock.fill(color) colors.update({name:QIcon(colorBlock)}) return colors
在 Windows 顯示的效果如下:
載入後資訊提示
由於演算法的解因為技術問題,先不做復原重作的選項。
檔案資訊對話方塊會顯示演算法的解。
另外以往錯誤訊息顯示在 log 裡,現在首次載入完畢後會顯示檔案狀態(之後編輯將不再顯示錯誤資訊)。
XML 支援滑鼠拖入開啟
將過濾器增加 xml 的格式。
Comments
comments powered by Disqus