通过词典连接两个组合(目的是在Combobox中显示男性或女性名称)

发布于 2025-02-11 10:45:25 字数 849 浏览 2 评论 0原文

我有一个组合,可以选择性别男性或女性。然后,我还有另一个Combobox,现在所有人的名字都被显示(没有性别的区别)。

我想从第一个Combobox中选择雄性,然后自动显示(无按钮)第二个Combobox中的男性名称。女性名字同样的事情。谢谢

from tkinter import ttk
import tkinter as tk
from tkinter import *

window = tk.Tk()  
window.attributes('-zoomed', True)
window.configure(bg='#f3f2f2')

style = ttk.Style(window)
style.theme_use('clam')

John = {"Name": "John", "Years": 1980, "Gender": "Male"}
Linda = {"Name": "Linda", "Years": 1983, "Gender": "Female"}
Martin = {"Name": "Martin", "Years": 1981, "Gender": "Male"}


gender=ttk.Combobox(window, width = 12)
gender.place(x=5, y=60)
gender['value'] = ["Male", "Female"]
gender.set("Gender?")

all_name=ttk.Combobox(window, width = 12)
all_name.place(x=150, y=60)
all_name['value'] = [x["Name"] for x in [John, Linda, Martin]]
all_name.set("All Name")



window.mainloop()

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

from tkinter import ttk
import tkinter as tk
from tkinter import *

window = tk.Tk()  
window.attributes('-zoomed', True)
window.configure(bg='#f3f2f2')

style = ttk.Style(window)
style.theme_use('clam')

John = {"Name": "John", "Years": 1980, "Gender": "Male"}
Linda = {"Name": "Linda", "Years": 1983, "Gender": "Female"}
Martin = {"Name": "Martin", "Years": 1981, "Gender": "Male"}


gender=ttk.Combobox(window, width = 12)
gender.place(x=5, y=60)
gender['value'] = ["Male", "Female"]
gender.set("Gender?")

all_name=ttk.Combobox(window, width = 12)
all_name.place(x=150, y=60)
all_name['value'] = [x["Name"] for x in [John, Linda, Martin]]
all_name.set("All Name")



window.mainloop()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑咖 2025-02-18 10:45:25

您可以绑定<< comboboxSelected>>性别上的事件和更新 value value all_name ofert all_name 事件回调:

...
def on_gender_selected(event):
    selected = gender.get()
    # get the names for selected gender
    all_name['value'] = [x['Name'] for x in [John, Linda, Martin] if x['Gender'] == selected]
    all_name.set('') # clear current selection

gender.bind('<<ComboboxSelected>>', on_gender_selected)
...

You can bind <<ComboboxSelected>> event on gender and update value option of all_name inside the event callback:

...
def on_gender_selected(event):
    selected = gender.get()
    # get the names for selected gender
    all_name['value'] = [x['Name'] for x in [John, Linda, Martin] if x['Gender'] == selected]
    all_name.set('') # clear current selection

gender.bind('<<ComboboxSelected>>', on_gender_selected)
...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文