首页 > 解决方案 > Python tkinter 组合框,如何选择字典键并打印相应的值?

问题描述

对 python 和 tkinter 来说非常新。我想创建多个组合框,从单个字典中独立选择,然后单击“提交”按钮后打印相应的值。通过查看一些类似的问题而没有错误和挫败感,我所能做的就是打印选定的键。

简单地说,我想在第一个组合框中选择 A4,在第二个组合框中选择 A7,单击提交,在 python shell 中产生这个结果:

8.3 x 11.7

2.9 x 4.1

而不是这个结果:

A4

A7

任何意见,将不胜感激。

import tkinter as tk
from tkinter import ttk

# Create instance
win = tk.Tk()

# Dictionary for combobox selection
Paper_sizes = {"":"", "A9":"1.5 x 2.0", "A8":"2.0 x 2.9",
               "A7":"2.9 x 4.1", "A6":"4.1 x 5.8", "A5":"5.8 x 8.3",
               "A4":"8.3 x 11.7", "A3":"11.7 x 16.5", "A2":"16.5 x 23.4",
               "A1":"23.4 x 33.1", "A0":"33.1 x 46.8"}
# Combobox 1
ttk.Label(win, text="Choose a paper size").grid(column=1, row=0)
paper1 = tk.StringVar()
paper1_chosen = ttk.Combobox(win, width=12, textvariable=paper1, state='readonly')
paper1_chosen['values']  = sorted(list(Paper_sizes.keys()))
paper1_chosen.grid(column=1, row=1)     
paper1_chosen.current(0)

# Combobox 2
ttk.Label(win, text="Choose a 2nd paper size").grid(column=1, row=2)
paper2 = tk.StringVar()
paper2_chosen = ttk.Combobox(win, width=12, textvariable=paper2, state='readonly')
paper2_chosen['values']  = sorted(list(Paper_sizes.keys()))
paper2_chosen.grid(column=1, row=3)     
paper2_chosen.current(0)

# Button Click Event Function
def submit_button():
    print(paper1_chosen.get())
    print(paper2_chosen.get())
    
# Adding a Button
action = ttk.Button(win, text = "Submit", command = submit_button)
action.grid(column=2, row=4)  

# Start GUI
win.mainloop()

标签: pythondictionarytkintercomboboxkey-value

解决方案


将您的功能更改为此对您有帮助吗?

def submit_button():
    key1 = paper1_chosen.get()
    key2 = paper2_chosen.get()
    print(Paper_sizes[key1])
    print(Paper_sizes[key2])

内部没有发生任何事情,所发生的只是您从组合框选择中获取键并打印出相应的值对。

希望您理解,如果您有更多疑问,请告诉我。

干杯


推荐阅读