PythonでGUIを作成する際には、リアルタイムのprintデバッグが難しいことがあります。そのため、メインウィンドウの他にログウィンドウを立ち上げると便利です。
以下に、Tkinterを使用してログウィンドウを作成するサンプルコードを示します。
import sys
import tkinter as tk
from tkinter import scrolledtext
TEXT_COLORS = {
'MESSAGE': 'black',
'INPUT': 'blue',
'OUTPUT': 'green',
'ERROR': 'red',
'DEBUG': 'yellow'
}
class IOLogFrame(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
master.title("Log Window")
self.txt = scrolledtext.ScrolledText(master)
self.txt.pack(fill=tk.BOTH, expand=1)
for key in TEXT_COLORS:
self.txt.tag_config(key, foreground=TEXT_COLORS[key])
def print(self, str, state='MESSAGE'):
self.txt.insert(tk.END, str+'\\n', state)
self.txt.see(tk.END)
def write(self, str, state='MESSAGE'):
self.txt.insert(tk.END, str+'\\n', state)
self.txt.see(tk.END)
def flush(self):
pass
class IOLogWindow(tk.Toplevel):
def __init__(self, master):
tk.Toplevel.__init__(self, master)
io = IOLogFrame(self)
io.print("Message")
io.print("--ERROR--", 'ERROR')
io.print("--INPUT--", 'INPUT')
io.print("--OUTPUT--", 'OUTPUT')
io.print("--DEBUG--", 'DEBUG')
if __name__ == '__main__':
win = tk.Tk()
io=IOLogWindow(win)
win.mainloop()
このコードでは、IOLogFrame
クラスでログウィンドウを作成し、print
メソッドでログを表示します。ログの種類によって色を変えることも可能です。
このようにPythonでGUIを作成する際には、ログ表示のためのウィンドウを作成することで、デバッグやユーザーへの情報提供を効果的に行うことができます。