ユーザーがTkinterを使用してボタンを押した後、Entry
ウィジェットをクリアしようとしています。
ent.delete(0, END)
を使用しようとしましたが、文字列に属性deleteがないというエラーが発生しました。
real.delete(0, END)
でエラーが発生しているコードは次のとおりです。
secret = randrange(1,100)
print(secret)
def res(real, secret):
if secret==eval(real):
showinfo(message='that is right!')
real.delete(0, END)
def guess():
ge = Tk()
ge.title('guessing game')
Label(ge, text="what is your guess:").pack(side=TOP)
ent = Entry(ge)
ent.pack(side=TOP)
btn=Button(ge, text="Enter", command=lambda: res(ent.get(),secret))
btn.pack(side=LEFT)
ge.mainloop()
Introduction to Tkinter を少し調べた後、次のコードを思い付きました。このコードは、テキストフィールドを表示し、"Clear text"
ボタンが押されます。
import tkinter as tk
class App(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master, height=42, width=42)
self.entry = tk.Entry(self)
self.entry.focus()
self.entry.pack()
self.clear_button = tk.Button(self, text="Clear text", command=self.clear_text)
self.clear_button.pack()
def clear_text(self):
self.entry.delete(0, 'end')
def main():
root = tk.Tk()
App(root).pack(expand=True, fill='both')
root.mainloop()
if __name__ == "__main__":
main()
ent
がエントリウィジェットへの適切な参照であると仮定すると、ent.delete(0, END)
は正しい答えです。言うエラーを受け取った場合、コードにエラーがあります。自分でエラーを見つけることができない場合は、コードを表示する必要があります。
real
は、文字列である値ent.get()
を取得します。どこから来たのかわからず、ウィジェットに影響を与える方法もありません。
real.delete()
の代わりに、エントリウィジェット自体で.delete()
を呼び出します。
def res(ent, real, secret):
if secret == eval(real):
showinfo(message='that is right!')
ent.delete(0, END)
def guess():
...
btn = Button(ge, text="Enter", command=lambda: res(ent, ent.get(), secret))
あなたの質問については不明です。 http://effbot.org/tkinterbook/entry.htm#patterns から、削除を呼び出した後に割り当てを行う必要があるようです。ウィジェットにエントリテキストを追加するには、insertメソッドを使用します。現在のテキストを置き換えるには、新しいテキストを挿入する前にdeleteを呼び出すことができます。
e = Entry(master)
e.pack()
e.delete(0, END)
e.insert(0, "")
もう少しコードを投稿できますか?
まず、テキストが有効になっていることを確認してから、タグを削除してからコンテンツを削除します。
myText.config(state=NORMAL)
myText.tag_delete ("myTags")
myText.delete(1.0, END)
テキストが「無効」の場合、テキストフィールドは読み取り専用モードであるため、削除は機能しません。
'END'を使用する代わりにent.delete(0,"end")
を続行し、引用符で 'end'を使用します。
secret = randrange(1,100)
print(secret)
def res(real, secret):
if secret==eval(real):
showinfo(message='that is right!')
real.delete(0, END)
def guess():
ge = Tk()
ge.title('guessing game')
Label(ge, text="what is your guess:").pack(side=TOP)
ent = Entry(ge)
ent.pack(side=TOP)
btn=Button(ge, text="Enter", command=lambda: res(ent.get(),secret))
btn.pack(side=LEFT)
ge.mainloop()
これで問題が解決します
def clear():
global input
abc =
input.set(abc)
root = Tk()
input = StringVar()
ent = Entry(root,textvariable = input,font=('ariel',23,'bold'),bg='powder blue',bd=30,justify='right').grid(columnspan=4,ipady=20)
Clear = Button(root,text="Clear",command=clear).pack()
入力はエントリ内のテキスト変数を設定します。これは文字列変数であり、文字列変数のテキストを「」として設定すると、エントリ内のテキストがクリアされます