我正在尝试向该程序添加一个带有“全选”的菜单。我希望它选择答案文本框中的所有文本,即“ blank2”。我可以使用菜单和下拉菜单来工作,但是当我单击“全选”时,它给我一个错误。这是代码...
#!/usr/bin/env python3
from tkinter import *
#function for select all menu item
def select_all(event=None):
blank2.tag_add('sel', '1.0', 'end')
return "break"
def getDaText():
src = blank.get()
if '_' in src:
dst = src.replace("_", " ")
else:
dst = src.replace(" ", "_")
blank2.insert(0, dst)
def clear_answer():
blank.delete('0', END)
blank2.delete('0', END)
main = Tk()
# Creating Menubar
menubar = Menu(main)
# Adding Edit Menu and commands
edit = Menu(menubar, tearoff = 0)
menubar.add_cascade(label ='Edit', menu = edit)
#edit.add_command(label ='Cut', command = None)
#edit.add_command(label ='Copy', command = None)
#edit.add_command(label ='Paste', command = None)
edit.add_command(label ='Select All', command=select_all)
Label(main, text=" add or remove underscore ").grid(row=0, columnspan=3, sticky=W, pady=1)
blank = Entry(main)
blank2 = Entry(main)
blank.grid(row=1, column=0, columnspan=2, sticky=W)
blank2.grid(row=2, column=0, columnspan=2, sticky=W)
Button(main, text='Show answer', command=getDaText).grid(row=3, column=0, sticky=W, pady=1)
Button(main, text='Clear', command=clear_answer).grid(row=3, column=1, sticky=W, pady=1)
# display Menu
main.config(menu = menubar)
mainloop()
这是错误...
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.5/tkinter/__init__.py", line 1553, in __call__
return self.func(*args)
File "/home/mthomas/python_progs/add_or_remove_underscore/add_or_remove_underscore-tk-with-label.py", line 5, in select_all
blank2.tag_add('sel', '1.0', 'end')
AttributeError: 'Entry' object has no attribute 'tag_add'
您tag_add
在Entry
-Widget上调用该方法。该小部件没有tag_add
方法。可能您想使用Text
-Widget。
# replace
blank2 = Entry(main)
# with
blank2 = Text(main)
参考:
入口小部件:https://www.tutorialspoint.com/python/tk_entry.htm
文字小工具:https://www.tutorialspoint.com/python/tk_text.htm
编辑
我已经使用Entry
-Widget寻找解决方案,并发现以下内容:
def select_all(event=None)
# first set the focus to the entry widget
blank2.focus()
# use the selection_range method from the entry widget
blank2.selection_range(0, END)
https://effbot.org/tkinterbook/entry.htm#Tkinter.Entry.selection_range-method
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句