I have a combobox where I select the gender Male or Female. Then I have another combobox where now all the names of people are displayed (without distinction of gender).
I would like to select Male from the first combobox and automatically display (without button) the Male names in the second combobox. The same thing for Female names. Thank you
JavaScript
x
30
30
1
from tkinter import ttk
2
import tkinter as tk
3
from tkinter import *
4
5
window = tk.Tk()
6
window.attributes('-zoomed', True)
7
window.configure(bg='#f3f2f2')
8
9
style = ttk.Style(window)
10
style.theme_use('clam')
11
12
John = {"Name": "John", "Years": 1980, "Gender": "Male"}
13
Linda = {"Name": "Linda", "Years": 1983, "Gender": "Female"}
14
Martin = {"Name": "Martin", "Years": 1981, "Gender": "Male"}
15
16
17
gender=ttk.Combobox(window, width = 12)
18
gender.place(x=5, y=60)
19
gender['value'] = ["Male", "Female"]
20
gender.set("Gender?")
21
22
all_name=ttk.Combobox(window, width = 12)
23
all_name.place(x=150, y=60)
24
all_name['value'] = [x["Name"] for x in [John, Linda, Martin]]
25
all_name.set("All Name")
26
27
28
29
window.mainloop()
30
Advertisement
Answer
You can bind <<ComboboxSelected>>
event on gender
and update value
option of all_name
inside the event callback:
JavaScript
1
10
10
1
2
def on_gender_selected(event):
3
selected = gender.get()
4
# get the names for selected gender
5
all_name['value'] = [x['Name'] for x in [John, Linda, Martin] if x['Gender'] == selected]
6
all_name.set('') # clear current selection
7
8
gender.bind('<<ComboboxSelected>>', on_gender_selected)
9
10