J.W*_*ong 4 python tkinter widget pattern-matching
我正在尝试自动清除Entry父小部件中的所有小部件。
import Tkinter
import re
root=Tkinter.Tk()
E1=Tkinter.Entry(root)
E1.pack()
E2=Tkinter.Entry(root)
E2.pack()
L1=Tkinter.Label(root,text='Label1')
L1.pack()
Run Code Online (Sandbox Code Playgroud)
我遇到了 3 个问题
wlist[0]以下与shell输出不同? 例如:
import Tkinter
import re
root=Tkinter.Tk()
E1=Tkinter.Entry(root)
E1.pack()
E2=Tkinter.Entry(root)
E2.pack()
L1=Tkinter.Label(root,text='Label1')
L1.pack()
Run Code Online (Sandbox Code Playgroud)
例如
>> re.search(r'Entry',wlist[0])
<< No output >>
Run Code Online (Sandbox Code Playgroud)
Entry部件,你将如何让部件对象本身执行delete方法调用?例如:
## Assuming I have a function to to clear the entry
## How would I pass the object from the pattern match in #2 to this function?
def clear_entry(objEntry):
objEntry.delete(0,Tkinter.END)
Run Code Online (Sandbox Code Playgroud)
Bry*_*ley 11
返回的项目winfo_children()是一个小部件列表。Tkinter 小部件有一种方法可以告诉您底层小部件类:winfo_class.
>>> wlist[0].winfo_class()
'Entry'
Run Code Online (Sandbox Code Playgroud)
您还可以简单地比较对象类型,就像与任何其他 python 对象一样:
>>> isinstance(wlist[0], Tkinter.Entry)
True
Run Code Online (Sandbox Code Playgroud)
由于结果winfo_children是一个小部件列表,您可以遍历它们并清除所有条目小部件,如下所示:
for widget in root.winfo_children():
if isinstance(widget, Tkinter.Entry):
widget.delete(0, "end")
Run Code Online (Sandbox Code Playgroud)
小智 1
通常,您将它们存储在列表或某个容器中。
entry_list=[E1, E2]
def clear_entry():
for id in entry_list:
id.delete(0,Tkinter.END)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8967 次 |
| 最近记录: |