Python Tkinter 表格控制元件


Tkinter 是 Python 中一個流行的用於建立圖形使用者介面 (GUI) 的庫。它提供了各種各樣的控制元件,可用於構建互動式且視覺上吸引人的應用程式。Tkinter 的一個關鍵特性是能夠建立控制元件的表格或網格。在本文中,我們將探討如何使用 Tkinter 建立控制元件表格並演示一些有用的技術。

Tkinter 提供了一個名為 Frame 的控制元件,它充當其他控制元件的容器。我們可以使用框架透過在行和列中排列多個框架來建立表格狀結構。每個框架可以包含不同的控制元件,例如標籤、按鈕、輸入欄位,甚至是其他框架。讓我們從建立帶有標籤作為單元格的基本表格結構開始。以下是程式碼:

示例

import tkinter as tk
root = tk.Tk()
root.title("Table-like structure by arranging multiple frames in rows and columns")
root.geometry("700x250")
# Create a frame to hold the table
table_frame = tk.Frame(root)
table_frame.pack()

labels = []
for i in range(3):
   row_labels = []
   for j in range(3):
   # Create a label for each cell in the table
      label = tk.Label(table_frame, text=f"Cell {i}-{j}")
      label.grid(row=i, column=j, padx=10, pady=10) # Position the label in the table
      row_labels.append(label)
   labels.append(row_labels)

root.mainloop()

在上面的程式碼中,我們建立了一個 Tk 例項和一個名為 table_frame 的框架來容納我們的表格。我們迭代表格的行和列,併為每個單元格建立標籤。grid 方法用於將標籤定位在各自的行和列中。我們還使用 padx 和 pady 引數在每個標籤周圍新增一些填充 (10 畫素)。

輸出

執行上述程式碼後,我們將得到一個 Tkinter 視窗,它使用框架透過在行和列中排列多個框架來建立表格狀結構。

現在讓我們透過向單元格新增按鈕來增強我們的表格。我們可以為每個按鈕關聯一個函式,以便在單擊它時執行某些操作。以下是程式碼:

示例

import tkinter as tk

def button_click(row, col):
   print(f"Button clicked: {row}-{col}")

root = tk.Tk()
root.title("Enhancing our table by adding buttons to the cells")
root.geometry("700x250")

table_frame = tk.Frame(root)
table_frame.pack()

buttons = []
for i in range(3):
   row_buttons = []
   for j in range(3):
   # Create a button for each cell in the table
      button = tk.Button(table_frame, text=f"Button {i}-{j}", command=lambda r=i, c=j: button_click(r, c))
      button.grid(row=i, column=j, padx=10, pady=10) # Position the button in the table
      row_buttons.append(button)
   buttons.append(row_buttons)

root.mainloop()

在上面的程式碼中,我們定義了一個 button_click 函式,它將行和列索引作為引數,並列印一條訊息,指示單擊了哪個按鈕。我們建立按鈕而不是標籤,並使用 command 引數將 button_click 函式與每個按鈕關聯。我們使用 lambda 函式將當前行和列索引傳遞給 button_click 函式。

輸出

執行上述程式碼後,我們將得到一個帶有增強型表格的 Tkinter 視窗,該表格在單元格中包含按鈕。

到目前為止,我們已經看到了如何建立靜態的控制元件表格。但是,在許多應用程式中,我們可能需要根據使用者輸入或資料更改動態更新表格。Tkinter 提供了修改控制元件屬性的方法,允許我們動態更新表格。

讓我們考慮一個示例,其中我們希望在單擊按鈕時更新標籤的文字。

示例

import tkinter as tk

root = tk.Tk()
root.title("Updating the text of a label when a button is clicked.")
root.geometry("700x250")


table_frame = tk.Frame(root)
table_frame.pack()

label = tk.Label(table_frame, text="Original text")
label.grid(row=0, column=0, padx=10, pady=10) # Position the label in the table


def update_label():
   label.config(text="New text") # Update the label's text property

button = tk.Button(root, text="Update", command=update_label)
button.pack()

root.mainloop()

在上面的程式碼中,我們建立了一個帶有初始文字的標籤和一個標有“更新”的按鈕。update_label 函式使用 config 方法修改標籤的 text 屬性。單擊按鈕時,將呼叫 update_label 函式,並更改標籤的文字。

輸出

執行上述程式碼後,我們將得到一個帶有初始文字和按鈕的 Tkinter 視窗。單擊按鈕時,標籤上的文字將更改。

您可以應用類似的技術來更新其他控制元件屬性,例如背景顏色、字型或大小。透過結合這些概念,您可以建立響應使用者操作或外部事件的動態表格。

結論

總之,Tkinter 提供了一組通用的控制元件,可以使用框架將其排列成表格狀結構。您可以建立帶有標籤、按鈕、輸入欄位或 Tkinter 支援的任何其他控制元件的表格。透過使用網格系統,您可以輕鬆地定位和對齊表格內的控制元件。此外,Tkinter 允許您動態更新控制元件屬性,使您可以建立響應使用者輸入或資料更改的互動式表格。憑藉這些功能,您可以使用 Python 和 Tkinter 構建強大的 GUI 應用程式。

更新於:2023年12月6日

1K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告