Axxxy Skrevet 16. oktober 2013 Del Skrevet 16. oktober 2013 (endret) Hei, er ikke alltid like lett å finne hva du er ute etter, så spørr her Holder på med Tkinter.Listbox(), og prøver å skape en binding med 'Enter'. Her er ett eksempel som fungerer: from Tkinter import * def enter(*ignore): labelText.set('Pressed!') root = Tk() labelText = StringVar() labelText.set('Not pressed') Label(root, textvariable=labelText).pack() root.bind('<Return>', enter) root.mainloop() Når jeg starter programmet står det "Not pressed" på skjermen, og når jeg trykker på "Enter" tasten, forandres teksten. Easy. Lurer på; har for øyeblikket to Listbox'er i prosjektet mitt. Den første listboksen skal inneholde kategorier som man kan velge mellom. Og når jeg trykker "Enter" på valgt element, skal jeg laste inn en liste over resultater fra valgt kategori i Listbox nr.2. Det kan jeg gjøre. Men er det mulig å få Listbox nr.2 i fokus samtidig? At jeg slipper å trykke "Tab" eller bruke musen for å sette Listbox nr.2 i fokus? Takk på forhånd! - Daniel Endret 16. oktober 2013 av Axxxy Lenke til kommentar
slacky Skrevet 17. oktober 2013 Del Skrevet 17. oktober 2013 (endret) Annbefaler og bruker klasser, og "self"... Ditt eksempel (Bind-to-key) fungerer ikke på Windows XP (Py 2.7), og heller ikke på noen av mine Linux-distroer (Py 2.7).Her er et eksempel, med noe jeg tror fungerer slik du ønsker. from Tkinter import * data = [None,None] data[0] = ['1','a','alpha'] data[1] = ['2','b','beta'] class ListThing: def __init__(self, parent=None): self.labelText = StringVar() self.labelText.set('Not pressed') Label(root, textvariable=self.labelText).pack() lb = Listbox(root) lb.insert(END, 'first') lb.insert(END, 'second') lb.bind('<Return>', self.listEnter) lb.pack() self.lb = lb self.rescurrent = None; resbox = Listbox(root) resbox.pack() self.resbox = resbox def listEnter(self, event=None): wdg = event.widget index = int(wdg.curselection()[0]) value = wdg.get(index) self.labelText.set(value) if self.rescurrent != index: self.resbox.delete(0, 'end') for item in data[index]: self.resbox.insert(END, item); self.rescurrent = index; self.resbox.focus_set() self.resbox.selection_set(0) root = Tk() ListThing(root); root.mainloop() Linjene verd å merke er: self.resbox.focus_set() self.resbox.selection_set(0) Endret 17. oktober 2013 av warpie Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå