Jestem początkującym użytkownikiem języka Python, działającym na MacOS.Jak powiązać klawisz Enter z funkcją w urządzeniu Tkinter?
Robię program z GUI parsera tekst w Tkinter, gdzie możesz wpisać jakąś komendę w Entry
widget i uderzył Button
widżet, który wyzwala moje parse()
FUNCT, ect, drukowanie wyników do Text
widget, styl tekstu przygodowego.
> Circumvent the button
I can't let you do that, Dave.
Staram się znaleźć sposób, aby pozbyć się potrzeby ciągnąć myszy nad do Button
każdym razem, gdy użytkownik wyda polecenie, ale okazało się trudniejsze, niż myślałem.
Zgaduję, że poprawny kod wygląda na self.bind('<Return>', self.parse())
? Ale nie wiem nawet, gdzie to umieścić. root
, __init__
, parse()
i create_widgets()
nie chcę tego.
Żeby było jasne, to jedyny powód każdy powinien uderzyć wprowadzić w prog jest zainicjowanie parse()
, więc nie musi być forsowane do widgetu Entry
specjalnie. Gdziekolwiek działa, jest w porządku.
W odpowiedzi na 7stud, podstawowy format:
from tkinter import *
import tkinter.font, random, re
class Application(Frame):
def __init__(self, master):
Frame.__init__(self, master, ...)
self.grid()
self.create_widgets()
self.start()
def parse(self):
...
def create_widgets(self):
...
self.submit = Button(self, text= "Submit Command.", command= self.parse, ...)
self.submit.grid(...)
root = Tk()
root.bind('<Return>', self.parse)
app = Application(root)
root.mainloop()
Otrzymuję NameError: self nie jest zdefiniowany, używając 'def pars (self, event): ...' i 'root.bind ('', self.parse)', tymczasem mój przycisk 'command = self.parse' nadal działa dobrze ... –
Ghosty
@Ghosty, dodałem dwa kolejne przykłady. – 7stud
Oczywiście używasz klas w swoim programie, więc jeśli umieścisz tylko podstawową strukturę swoich zajęć (mogą być puste), mogę zmodyfikować przykład, abyś pracował w ustawieniu klasy. – 7stud