Io sono un Python che inizia l'auto-apprendimento, in esecuzione su MacOS.Come si associa il tasto Invio a una funzione in tkinter?
Sto facendo un programma con una GUI di testo parser in Tkinter, in cui si digita un comando in un widget Entry
, e ha colpito un widget Button
, che innesca il mio parse()
funct, ect, la stampa i risultati di un widget Text
, stile testo-avventura.
> Circumvent the button
I can't let you do that, Dave.
Sto cercando di trovare un modo per sbarazzarsi della necessità di trasportare il mouse sopra alla Button
ogni volta che l'utente invia un comando, ma questo si è rivelato più difficile di quanto pensassi.
Immagino che il codice corretto assomigli a self.bind('<Return>', self.parse())
? Ma non so nemmeno dove metterlo. root
, __init__
, parse()
e create_widgets()
non lo vogliono.
Per essere chiari, l'unico motivo per cui chiunque dovrebbe entrare nel programma è quello di attivare parse()
, quindi non è necessario sposarlo specificamente al widget Entry
. Ovunque funzioni, va bene.
In risposta alla 7stud, il formato di base:
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()
Sto ricevendo un NameError: self non è definito, utilizzando 'def parse (self, event): ...' e 'root.bind ('', self.parse)', nel frattempo il mio pulsante 'comando = self.parse funziona ancora bene ... –
Ghosty
@Ghosty, ho aggiunto altri due esempi. – 7stud
Stai ovviamente utilizzando le classi nel tuo programma, quindi se pubblichi solo la struttura di base delle tue classi (possono essere vuote), posso modificare l'esempio affinché tu possa lavorare in un'impostazione di classe. – 7stud