Tkinter模組
Tkinter 是 Python 標準庫中提供的一個用於創建圖形用戶界面 (GUI) 的模組。它是一個跨平台工具包,通過 Tkinter,開發者可以快速構建圖形化的應用程式,例如計算機、文字編輯器、圖形繪製工具等。
Tkinter 的特點
- 簡單易用:適合初學者,提供直接的接口來構建 GUI 應用。
- 跨平台支持:支援 Windows、macOS 和大多數 Linux 系統,除了windows以外都需用pip額外安裝
- 標準庫支持:內建於 Python 中,無需額外安裝。
- 基本組件豐富:包含標籤、按鈕、文字框、選單、進度條等常見 GUI 元件。
一開始使用這個模組是因為想練習GUI套件,所以找到一個較簡易的模組,用來設計計算機。以下是tkinter內建的基本function,後續會一一介紹。
Tkinter 的組件簡介
| 元件名稱 | 功能描述 |
|---|---|
| Label | 用於顯示文字或圖像的標籤元件。 |
| Button | 按鈕元件,可用於觸發事件或執行功能。 |
| Entry | 單行文字輸入框,用於接收用戶輸入的簡單文字。 |
| Text | 多行文字輸入框,用於編輯或顯示多行文字。 |
| Radiobutton | 單選按鈕組,用於讓用戶在多個選項中選擇一個。 |
| Checkbutton | 複選按鈕,用於啟用或停用多個選項。 |
| Listbox | 列表框,用於顯示多項內容並允許用戶選擇其中一項或多項。 |
| OptionMenu | 下拉選單,提供多個選項以供選擇。 |
| Scale | 滑動條,用於調整數值範圍內的值。 |
| Spinbox | 數值調整框,提供增減特定範圍內數值的功能。 |
| Frame | 框架,用於組織和排列其他元件。 |
| LabelFrame | 帶標籤的框架,用於分組相關元件。 |
| Scrollbar | 滾動條,用於為列表、文本框等組件提供滾動功能。 |
| Canvas | 畫布,用於繪製圖形、顯示圖片或設置自定義的界面。 |
| Menu | 選單條,用於創建應用程式的功能選單。 |
| Messagebox | 消息框,用於顯示提示、警告或錯誤訊息。 |
| PhotoImage | 用於在介面中顯示圖片。 |
| ttk.Progressbar | 進度條,用於顯示任務的執行進度。 |
| ttk.Combobox | 下拉選單,結合輸入和選項的功能。 |
近期更加熟悉Tkinter模組後,想說要練習一點更進階的。
所以萌生了寫一個簡單的遊戲,不過寫完才發現只使用到Button, Label, Frame
總之寫的過程中更熟悉Python的一些語法。
接下來會一一介紹每個Class裡的Method是如何一步步做出這個遊戲,最後也會附上exe檔
首先先創建class TicTacToe
然後定義__init__
def __init__(self, root) -> None: self.root = root # 紀錄root視窗 self.root.title("Tic Tac Toe") # 視窗名稱顯示Tic Tac Toe self.record = {} # 後續電腦紀錄X, O 的位置 self.record.setdefault("X", []) # 字典類別,{key, value} = {'X', []} self.record.setdefault("O", []) # 字典類別,{key, value} = {'Y', []} self.current_player = "X" # 玩家先手預設使用 X self.board = [["" for _ in range(3)] for _ in range(3)] # 紀錄 3*3 空格中分別被誰占住 self.buttons = [[None for _ in range(3)] for _ in range(3)] # button 顯示X, O的變數 self.scores = {"X": 0, "O": 0} # X, O 的分數 self.frame = ttk.Frame(self.root, padding="10") # 用來顯示X, O 分數的Frame self.frame.grid(row=0, column=0) # 用grid的方式顯示,而非pack self.score_label = ttk.Label( self.frame, text="X:0 | O: 0", font=("Arial", 16) ) # 對應的文字訊息,使用label放上去 self.score_label.grid(row=0, column=0, columnspan=3, pady=(0, 10)) # 使用grid方式顯示 self.create_board() # 創建 3*3 棋盤 |
創建 3 * 3 棋盤,每格使用Button方式填充,按下對應button後會執行make_move Method,並且將每個button屬性記錄進self.buttons
def create_board(self): for row in range(3): for col in range(3): button = tk.Button( self.root, text="", font=("Arial", 16), width=5, height=2, command=lambda r=row, c=col: self.make_move(r, c), ) button.grid(row=row + 1, column=col, padx=5, pady=5) self.buttons[row][col] = button |
未完待續.... 今天一次更新太多,盡量快速更新完
非常簡陋的外觀,下載如果想試試看的話。
文章標籤
全站熱搜
