2017-01-15 5 views
-1

Situation: Wenn ich die Maustaste benutze, um auf den "Abwärtspfeil" einer ttk.combobox zu klicken, wird standardmäßig eine Dropdownliste angezeigt. Wenn der Abwärtspfeil ein zweites Mal angeklickt wird, wird die Combobox-Dropdown-Liste ausgeblendet.So blenden Sie eine Dropdownliste ttk.combobox ohne externen Stimulus aus

Verwenden der Tastatur. Es ist möglich, die Combobox-Dropdown-Liste anzuzeigen, indem Sie einmal auf den "Abwärtspfeil" drücken. Wenn Sie weiter auf den "Abwärtspfeil" drücken, wird die Dropdown-Liste bis zum Ende durchlaufen. Durch wiederholtes Drücken der "Nach-oben-Taste" wird in der Dropdown-Liste nach oben geblättert, bis die Markierung/Auswahl oben in der Dropdown-Liste angezeigt wird. Die Dropdown-Liste wird jedoch nicht endgültig ausgeblendet.

Frage: Ohne Verwendung der Maus oder Tastatur, das heißt, mithilfe von Computerprogrammierung, wie kann ich eine Expose Dropdown-Liste einer ttk.combobox ausblenden. Ich bin mir bewusst, dass der Befehl w.event_generate("<Down>") verwendet werden kann, um eine ttk.combobox zu programmieren, um seine Dropdownliste anzuzeigen. Aber wie erreiche ich das Gegenteil? Das heißt, wie kann ich den gleichen wevent_generate() Befehl verwenden, um die Dropdown-Liste zu verbergen? Oder welchen anderen tkinter Befehl sollte ich verwenden, um zu erreichen, was ich will?

+0

Könnte jemand erklären, warum ich für meine Frage 2 Minuspunkte bekommen habe? –

Antwort

0

Ich habe mehrere Versuche bei dieser Frage gemacht und schließlich einen Weg gefunden, die Combobox-Auswahlliste durch Programmierung zu verbergen. Mein Code ist unten gezeigt.

ERKLÄRUNGEN:

  1. "combobox_widget_object.event_generate('<Button-1>')" können Mit der Combobox Dropdown-Liste führen zu zeigen. Ereignis '<Button-1>' scheint inhärent zu sein, um dieses Verhalten zu verursachen.
  2. Das Ausführen von 2 dieses Befehls nacheinander führt nicht zum Anzeigen und Ausblenden der Combobox Dropdown-Liste. Es zeigt immer noch nur die Dropdown-Liste wie mit einem einzelnen Befehl.
  3. Die Methode "combobox_widget_object.after(delay_ms, callback=None, *args)" kann verwendet werden, um die Combobox anzuweisen, nach bestimmten Zeitverzögerungen eine Funktion auszuführen. Diese Funktion sollte die Methode
    "combobox_widget_object.event_generate('<Button-1>')" enthalten, um das Verbergen der Dropdown-Liste zu verursachen.

Code:

# tkinter modules 
import tkinter as tk 
import tkinter.ttk as ttk 

""" 
Aim: 
Create a combobox widget and use w.event_generate(sequence, sequence,**kw) to 
simulate external stimuli to cause combobox dropdown list to show and hide. 

Author: Sun Bear 
Date: 16/01/2017 
""" 

# Function to activate combobox's '<Button-1>' event 
def _source_delayed_clicked(): 
    print ('\n def __source_delayed_clicked():') 
    print('Delayed 2nd simulation of external stimuli') 
    print('HIDE combobox Dropdown list. \n' 
      'IT WORKED!') 
    source.event_generate('<Button-1>') 

root = tk.Tk() 
source_var=tk.StringVar() 
reference=['Peter', 'Scotty', 'Walter', 'Scott', 'Mary', 'Sarah'] 

# Create Main Frame in root 
frame0 = ttk.Frame(root, borderwidth=10, relief=tk.RAISED) 
frame0.grid(row=0, column=0, sticky='nsew') 

# Create Combobox 
source = ttk.Combobox(frame0, textvariable=source_var, values=reference) 
source.grid(row=0, column=0, sticky='nsew') 

# Simulate external stimuli using w.event_generate(sequence,**kw) 
print('\n', '1st simulation of external stimuli using: \n' 
     ' source.event_generate('"<Button-1>"') \n' 
     ' SHOW Combobox Dropdown List.') 
source.event_generate('<Button-1>') 
#source.event_generate('<Button-1>') # running another similar command 
            # back to back didn't work 
delay = 1000*6 # 6 seconds delay 
source.after(delay, _source_delayed_clicked) 

Update: Alternativ die Combobox Drop-Down-Liste zu verbergen, den Befehl source.event_generate('<Escape>') kann in der Funktion def _source_delayed_clicked() definiert anstelle des source.event_generate('<Button-1>') Befehl verwendet werden. Dies simuliert das Drücken der Tastatur "Esc" Schlüssel.

Verwandte Themen