基于组合框的 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()
好的,所以今天的问题是我决定构建的代码,用于练习 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()