我正在嘗試在 tkinter 中進行簡單的查找和替換小部件。我可以按下“RegexReplace”按鈕,它運行良好,沒有任何問題。
在這個小部件中,我們首先輸入 if label1,然后輸入 label2,我想要的是當我在名為“To”的標簽中輸入要替換的文本并按 Return 鍵時,我希望應用程式執行查找和替換而不需要按按鈕“正則運算式替換”。
Wanted 當我們輸入“To”標簽時,如果我們按“Enter”鍵,運行“find_and_replace”函式,如果我們按“ctrl Enter”鍵運行“find_and_replace”函式。
基本上,我不想按“RegexReplace”按鈕,當我在輸入“To”欄位后按 Enter 鍵時,我希望命令運行。
我的嘗試
l_to.bind("<Return>", lambda x=[e_from,e_to]: find_and_replace(x[0],x[1]) ) # did not work
MWE
import tkinter as tk
from tkinter import ttk,messagebox
win = tk.Tk()
def find_and_replace(entry_from,entry_to):
# Get variables
str_from = entry_from.get()
str_to = entry_to.get()
s = 'Quick brown fox jumped.'
out = s.replace(str_from, str_to)
tk.Label(win, text=out).pack(pady=4)
f = tk.Frame(win,height=200, width=200)
f.grid(row=0,column=0,padx=20, pady=20)
f.pack(fill="both", expand="yes")
# label frame: Find and Replace
lf00 = tk.LabelFrame(f, text='Replace this: Quick brown fox jumped.')
lf00.grid(row=0, column=0, padx=(20, 2), pady=20, sticky='e')
l_from = tk.Label(lf00,text='From');l_from.grid(row=0,column=0)
l_to = tk.Label(lf00,text='To');l_to.grid(row=0,column=1)
e_from = tk.Entry(lf00);e_to = tk.Entry(lf00)
e_from.grid(row=1,column=0);e_to.grid(row=1,column=1)
b20 = tk.Button(lf00,text='RegexReplace',
command= lambda x=[e_from,e_to]: find_and_replace(x[0],x[1]))
b20.grid(row=2,column=0,sticky='w')
b21 = tk.Button(lf00,text='MultiReplace',
command= lambda x=[e_from,e_to]: find_and_replace(x[0],x[1]))
b21.grid(row=2,column=1,sticky='e')
win.mainloop()
uj5u.com熱心網友回復:
系結到適當的小部件
e_from = tk.Entry(lf00);e_to = tk.Entry(lf00)
# add '_event' param to the lambda to absorb the unused event
e_from.bind("<Return>", lambda _event, x=[e_from,e_to]: find_and_replace(x[0],x[1]) )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/530277.html
