建立一個類似 console 的視窗

這個程式碼是透過 Copilot 產生出來的,一開始都無法成功,中間還有時候給出上次完全一樣的錯誤程式碼,沒有仔細看還會被騙過,搞了快一小時總會產生可用的程式碼。

這個功能只是在 main.py 產生一個類似 console 的視窗,按了按鈕後執行其它 py 檔的函數,然後可以把資料輸出到 console 視窗。自己寫一直出現錯誤,也找不到為什麼,只好借助AI來幫忙。

main.py

import tkinter as tk
import config  # 確保匯入 config 模組

def create_window():
    root = tk.Tk()
    root.title("Console Example")

    config.set_console(tk.Text(root, wrap=tk.WORD, width=50, height=20, bg="light yellow", bd=3, relief="solid"))
    config.console.pack(pady=10)

    from external_script import external_function  # 在 console 初始化完成後匯入

    # 添加一個按鈕來呼叫 external_function
    test_button = tk.Button(root, text="呼叫外部函數", command=external_function)
    test_button.pack(pady=10)

    root.after(1000, lambda: config.output_to_console("這是一條測試訊息"))

    root.mainloop()

if __name__ == "__main__":
    create_window()

external_script.py

from config import console,output_to_console   # 匯入 config 模組

def external_function():
    print("external_function 被呼叫")

    if console is not None:
        print("console 已定義")
        output_to_console("這是一條來自 external_script.py 的測試訊息")
    else:
        print("console 未定義或未初始化,無法輸出訊息")

config.py

import tkinter as tk

# 初始化全域變數
console = None

def set_console(widget):
    global console
    console = widget

def output_to_console(text):
    global console
    if console is not None:
        console.insert(tk.END, text + "\n")
        console.see(tk.END)  # 自動滾動到最底部
    else:
        print("console 未初始化,無法輸出訊息")

留言