GUI 单位转换 Meters/Feet
GUI Unit Conversion Meters/Feet
我已经在 Tkinter 模块上工作了几个星期,并开始编写 GUI。当我按下计算按钮时出现问题,它没有显示任何内容。它的目标是在用户选择米或用户选择英尺转换为米时显示 25 米转换为英尺。我希望它像这里的视频一样工作。任何帮助,将不胜感激。 https://youtu.be/1z41yet2DkI
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Length Converter")
def calculate(*args):
# Conversion of meters
if choices == "meters":
value = float(meters.get())
feet.set(int(3.281 * value * 10000.0 + 0.5)/10000.0)
# Conversion of feet
if choices == "feet":
value = float(feet.get())
meters.set(int(0.3048 * value * 10000.0 + 0.5) / 10000.0)
mainframe = ttk.Frame(root, padding= "25 25 25 25")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
meters = StringVar()
feet = StringVar()
n = StringVar()
input_entry = ttk.Entry(mainframe, width=7, textvariable=meters)
input_entry.grid(column=2, row=1, sticky=(W, E))
choices = ttk.Combobox (root, width = 10, textvariable = n)
choices ['values'] = ('meters', 'feet')
choices.grid(column = 1, row = 1)
ttk.Label(mainframe, text="is equal to").grid(column=1, row=2, sticky=E)
ttk.Button(mainframe, text="Calculate", command=calculate).grid(column=2, row=3, sticky=W)
for child in mainframe.winfo_children():
child.grid_configure(padx=5, pady=5)
root.mainloop()
下面基本上就是你想要的。我重命名了你的 StringVar
s 并添加了一个额外的来保存结果。
rom tkinter import *
from tkinter import ttk
def calculate(*args):
if choices.get() == 'meters':
value = float(inp.get())
result.set(int(3.281 * value * 10000.0 + 0.5) / 10000.0)
units.set('feet')
if choices.get() == 'feet':
value = float(inp.get())
result.set(int(0.3048 * value * 10000.0 + 0.5) / 10000.0)
units.set('meters')
root = Tk()
root.title('Length Converter')
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
mainframe = ttk.Frame(root, padding='25 25 25 25')
mainframe.grid(sticky=(N, W, E, S))
inp = StringVar()
choice = StringVar()
result = StringVar()
units = StringVar()
input_entry = ttk.Entry(mainframe, width=7, textvariable=inp)
input_entry.grid(row=1, column=0)
choices = ttk.Combobox(mainframe, width=10, textvariable=choice, values=('meters', 'feet'))
choices.grid(row=1, column=1)
ttk.Label(mainframe, text='is equal to').grid(row=2, column=0)
ttk.Label(mainframe, textvariable=result).grid(row=2, column=1, sticky=E)
ttk.Label(mainframe, textvariable=units).grid(row=2, column=2, sticky=W)
ttk.Button(mainframe, text='Calculate', command=calculate).grid(row=3, column=1)
for child in mainframe.winfo_children():
child.grid_configure(padx=5, pady=5)
root.mainloop()
我已经在 Tkinter 模块上工作了几个星期,并开始编写 GUI。当我按下计算按钮时出现问题,它没有显示任何内容。它的目标是在用户选择米或用户选择英尺转换为米时显示 25 米转换为英尺。我希望它像这里的视频一样工作。任何帮助,将不胜感激。 https://youtu.be/1z41yet2DkI
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Length Converter")
def calculate(*args):
# Conversion of meters
if choices == "meters":
value = float(meters.get())
feet.set(int(3.281 * value * 10000.0 + 0.5)/10000.0)
# Conversion of feet
if choices == "feet":
value = float(feet.get())
meters.set(int(0.3048 * value * 10000.0 + 0.5) / 10000.0)
mainframe = ttk.Frame(root, padding= "25 25 25 25")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
meters = StringVar()
feet = StringVar()
n = StringVar()
input_entry = ttk.Entry(mainframe, width=7, textvariable=meters)
input_entry.grid(column=2, row=1, sticky=(W, E))
choices = ttk.Combobox (root, width = 10, textvariable = n)
choices ['values'] = ('meters', 'feet')
choices.grid(column = 1, row = 1)
ttk.Label(mainframe, text="is equal to").grid(column=1, row=2, sticky=E)
ttk.Button(mainframe, text="Calculate", command=calculate).grid(column=2, row=3, sticky=W)
for child in mainframe.winfo_children():
child.grid_configure(padx=5, pady=5)
root.mainloop()
下面基本上就是你想要的。我重命名了你的 StringVar
s 并添加了一个额外的来保存结果。
rom tkinter import *
from tkinter import ttk
def calculate(*args):
if choices.get() == 'meters':
value = float(inp.get())
result.set(int(3.281 * value * 10000.0 + 0.5) / 10000.0)
units.set('feet')
if choices.get() == 'feet':
value = float(inp.get())
result.set(int(0.3048 * value * 10000.0 + 0.5) / 10000.0)
units.set('meters')
root = Tk()
root.title('Length Converter')
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
mainframe = ttk.Frame(root, padding='25 25 25 25')
mainframe.grid(sticky=(N, W, E, S))
inp = StringVar()
choice = StringVar()
result = StringVar()
units = StringVar()
input_entry = ttk.Entry(mainframe, width=7, textvariable=inp)
input_entry.grid(row=1, column=0)
choices = ttk.Combobox(mainframe, width=10, textvariable=choice, values=('meters', 'feet'))
choices.grid(row=1, column=1)
ttk.Label(mainframe, text='is equal to').grid(row=2, column=0)
ttk.Label(mainframe, textvariable=result).grid(row=2, column=1, sticky=E)
ttk.Label(mainframe, textvariable=units).grid(row=2, column=2, sticky=W)
ttk.Button(mainframe, text='Calculate', command=calculate).grid(row=3, column=1)
for child in mainframe.winfo_children():
child.grid_configure(padx=5, pady=5)
root.mainloop()