基于组合框的 tkinter 条目

tkinter entries based on combobox

好的,所以今天的问题是我决定构建的代码,用于练习 python 的一系列技能。所以代码将是转换的 Tkinter 版本。它最终会有一个包含每个潜在转换的组合框;希望在最少的帮助下,我会通过几个问题来解决大部分问题,以便将我重定向到解决方案!

所以目前我有 24 行创建了根 window。 window 的大小应该完全取决于屏幕尺寸(第 7 行)。当前仅列出 1 个项目的组合框“长度”。

所以这就是 for seeable 代码的 many/most 会出现问题的地方。第 16-22 行是我尝试弄清楚如何编写它。 (我可能需要一个比 combo_0 更好的名字,但我 运行 的时间很短22=]) 也欢迎任何有关命名的建议。

from tkinter import *
from tkinter.ttk import *

#root window
root = Tk()
root.title("Conversion")
root.geometry(f'600x400+{int(root.winfo_screenwidth()/2-600/2)}+{int(root.winfo_screenheight()/2-400/2)}')

#drop down widget "combo"
combo = Combobox(root)
combo['values']= ("Length")
combo.current(0) #set the selected item 'default'
combo.grid(column=0, row=0)

#widget check
if combo.get() == 0:
    combo_0 = Combobox(root)
    combo['values'] = ("Millimeter", "Centimeter", "meter"
                       "Kilometer", "Inch", "Foot", "Yard",
                       "Mile", "Nautical Mile")
    combo_0.grid(column=1, row=1)

root.mainloop()


我正在尝试做的是基于第一个组合框,目前唯一的选项是“长度”,当 selected 它更改为具有适当的 entry/combo 框时。因此,例如,当“长度”时,它需要 2 个具有相同选项的组合框(“毫米”、“厘米”、“米”、“公里”、“英寸”、“英尺”、“院子”、“英里”、“海里”)和一个输入框。因此,您需要在相应的组合框中将 select 英寸转换为英尺,然后输入要转换的数字。它还需要一种方法将结果 return 显示在屏幕上,以便用户可以看到转换结果。

您要找的是<<ComboboxSelected>>


以下是您的编码方式:

.
.
#widget check
def displayNextComboxes(event):
    if combo.get() == "Length":
        comboValues = ("Millimeter", "Centimeter", "meter"
                           "Kilometer", "Inch", "Foot", "Yard",
                           "Mile", "Nautical Mile")
        combo_0 = Combobox(root)
        combo_0['values'] = comboValues
        combo_0.grid(column=0, row=1)
        Label(text="TO ").grid(column=1, row=1)
        combo_1 = Combobox(root)
        combo_1['values'] = comboValues
        combo_1.grid(column=2, row=1)

        userValue = StringVar()
        valueEntry = Entry(root, textvariable = userValue)
        valueEntry.grid(column=1, row=2)
        convertButton = Button(root,text="Convert", command=Convert)
        convertButton.grid(column=1, row=3)
        
#Binded the combobox's selection with the function `displayNextComboxes`:
combo.bind("<<ComboboxSelected>>", displayNextComboxes)    

def Convert():
    pass #write here the code to check, 
         #convert, and display the value entered by the user to convert.

root.mainloop()