如何從Python Tkinter Text元件獲取選定的文字?


在軟體開發領域,圖形使用者介面 (GUI) 是建立使用者友好型應用程式的關鍵。Python 是一種流行的程式語言,它提供各種工具和庫來使 GUI 應用程式開發更容易上手。Tkinter 就是這樣一個庫,它簡化了在 Python 中構建 GUI 應用程式的過程。

在本文中,我們將探討 Tkinter 的一個特定方面——如何輕鬆地從 Tkinter Text 元件中提取選定的文字。

深入瞭解 Tkinter

Tkinter(“Tk 介面”的縮寫)是 Python 用於建立 GUI 的首選庫。它被廣泛使用,因為它包含在大多數 Python 安裝中,因此非常易於訪問。Tkinter 提供了一系列元件,包括按鈕、標籤、輸入欄位和 Text 元件,後者非常適合顯示和編輯文字。

Tkinter Text 元件在處理多行文字時非常出色。它提供各種方法和選項來定製其行為,從更改字型和顏色到新增捲軸。在其眾多功能中,能夠選擇和操作元件內的文字至關重要。

程式設計上,我們可以將其分為如下所示的兩部分:

在 Tkinter Text 元件中選擇文字

在 Tkinter Text 元件中選擇文字是最簡單的部分。使用者可以像在普通文字編輯器中一樣單擊並拖動滑鼠游標來突出顯示文字。您還可以使用 tag_add() 方法以程式設計方式選擇文字,該方法將標籤附加到所需的文字。這些標籤就像您可以用來標識文字特定部分的標籤。

例如,以下是如何以程式設計方式在 Tkinter Text 元件中選擇文字:

text_widget.tag_add("my_tag", "1.0", "1.5")

在此程式碼中,名為“my_tag”的標籤應用於從索引“1.0”到索引“1.5”的文字。這有效地選擇了從第一行(第 1 行)的開頭到該行第五個字元的文字。

獲取選定的文字

要從 Tkinter Text 元件檢索選定的文字,可以使用 tag_ranges("sel") 方法。此方法將選定文字的起始和結束索引作為元組提供。使用這些索引,您可以使用 get() 方法輕鬆獲取選定的文字。以下是操作方法的分步示例:

sel_start, sel_end = text_widget.tag_ranges("sel")

if sel_start and sel_end:
   selected_text = text_widget.get(sel_start, sel_end)
   print("Selected Text:", selected_text)

在此程式碼中,sel_start 和 sel_end 儲存選定文字的起始和結束索引。如果存在選定文字,則 get() 方法會將其檢索,然後我們將其列印到控制檯。如果沒有選定文字,我們將顯示一條訊息,指示沒有選擇任何內容。

示例

為了演示如何從 Tkinter Text 元件提取選定的文字,讓我們建立一個基本的 Python 應用程式,在該應用程式中,我們將建立一個 Tkinter 視窗,新增一個 Text 元件、一個用於獲取選定文字的按鈕和一個用於顯示結果的標籤。

# importing the tkinter module
import tkinter as tk

# defining the function to select and extract text from text widget
def get_selected_text():
   sel_start, sel_end = text_widget.tag_ranges("sel")
    
   if sel_start and sel_end:
      selected_text = text_widget.get(sel_start, sel_end)
      result_label.config(text="Selected Text: " + selected_text)
   else:
      result_label.config(text="No text selected.")

# creating Tkinter window
root = tk.Tk()
root.geometry("720x450")
root.title("Extracting Selected Text from Python Tkinter Text Widget")

text_widget = tk.Text(root)
text_widget.pack()

# creating the text button
get_text_button = tk.Button(root, text="Get Selected Text", command=get_selected_text)
get_text_button.pack()

result_label = tk.Label(root, text="")
result_label.pack()

root.mainloop()

在此程式碼中,我們建立一個 Tkinter 視窗並向其中新增一個 Text 元件。我們還引入了一個標記為“獲取選定文字”的按鈕和一個將顯示結果的標籤。

輸出

執行程式碼後,將出現一個簡單的 GUI,其中包含一個 Text 元件、一個標記為“獲取選定文字”的按鈕和一個標籤。使用者可以在 Text 元件中鍵入或貼上文字並選擇其一部分。單擊“獲取選定文字”按鈕將在結果標籤中顯示選定的文字。

您可以看到,我們選擇了文字“tutorialspoint.com”,當單擊“獲取選定文字”按鈕時,它將被顯示。

結論

從 Tkinter Text 元件提取選定的文字是 GUI 應用程式開發中的一個基本操作。無論您是構建簡單的文字選擇工具還是複雜的文字編輯器,能夠訪問和操作選定文字對於提供豐富的使用者體驗至關重要。

在本文中,我們探討了如何使用 tag_ranges("sel") 方法從 Tkinter Text 元件中選擇和檢索文字。我們建立了一個簡單的 Python 應用程式,演示了選擇文字並將其顯示給使用者的過程。

更新於:2023年12月5日

2K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告