-1
私はtkinterエントリーウィジェットに数字だけを許可する検証を追加しました。私はリフレッシュと再開の機能を有効にするためにエントリーウィジェットを空にできると思ったコードを追加しました。バリデーション防止リフレッシュ/再起動防止 - tkinter
再起動ボタンまたは参照ボタンが押されたとき、エントリウィジェットとテキストエリアの両方をクリアしたいと思っています。現在、テキスト領域のみがクリアされています。数字は入力ウィジェットに残ります。私のコードへの提案された改正は認められるでしょう。
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
...
vcmd = (self.register(self.onValidate), '%S')
self.weight_entry = tk.Entry(self, validate='key', vcmd = vcmd)
self.weight_entry.pack(pady = 10)
self.text = tk.Text(self)
self.text.pack(pady = 10)
self.text.config(state='disabled')
Restart_button = tk.Button(self, text="Restart", command=self.restart)
Refresh_button = tk.Button(self, text="Refresh", command=self.refresh)
...
# Code below adds validation to the Entry widget so only numbers can be entered
def onValidate(self,s):
if (self.weight_entry ==""):"""Not sure if this is correct. Taken from another answer on SO."""
return True
if s in ['0','1','2', '3', '4', '5', '6', '7', '8', '9']:
return True
else:
self.bell() # adds a sound effect to error
self.text.delete(1.0, tk.END) # deletes the error message if valid entry provided
return False
def restart(self):
self.refresh()
self.controller.show_frame("StartPage")
def refresh(self):
self.weight_entry.delete(0,tk.END)
self.text.config(state='normal')
self.text.delete("1.0", "end")
self.text.config(state='disabled')