嘿,我是python的新手,我在高中上课。对于我正在进行的任务,我们必须制作一个tkinter gui,其中包括小部件、标签、按钮、输入框、单选按钮或复选按钮、框架和显示框。我正在制作一个千米-英里转换器,如果选择它,它可以做相反的事情,用户可以选择单选按钮来选择他们想要计算的一个,但我在计算部分遇到了很多麻烦,因为我无法将输入框的数字设为倍数或除以1.609或任何数字。这是我现在的代码,我为混乱和可能有多糟糕道歉
import tkinter as tk
import tkinter.messagebox
# Customize main window
root = tk.Tk()
root.title('GUI Assignment')
# Create the frames, right, left, and bottom, and pack them
bframe = tk.LabelFrame(root, highlightthickness=0, borderwidth=0, padx=100, pady=50)
bframe.pack(side='bottom')
rframe = tk.LabelFrame(root, highlightthickness=0, borderwidth=0, padx=100, pady=50)
rframe.pack(side='right')
lframe = tk.LabelFrame(root, highlightthickness=0, borderwidth=0, padx=100, pady=50)
lframe.pack(side='left')
# Make the label and the entry box for the right frame
dlabel = tk.Label(rframe, text = 'Enter the distance', )
dentry = tk.Entry(rframe, width=75)
# Pack the label and entry
dlabel.pack(side='left')
dentry.pack(side="right")
dist = 3.0
temp =(dentry.get())
# Create the convert command
def convert():
if radio_var.get()==1:
tkinter.messagebox.showinfo('Distance',temp / dist )
# Make the convert and quit buttons
b = tk.Button(bframe, text="Convert", command=convert)
quit = tk.Button(bframe, text='Quit', command=root.destroy)
# Pack the buttons
b.pack(side='left')
quit.pack(side='right')
# Make the radio variable
radio_var = tk.IntVar()
radio_var.set(1)
# Make the radio buttons for the left frame
rb = tk.Radiobutton(lframe, text='Km to Miles', variable=radio_var, value=1)
rb2 = tk.Radiobutton(lframe, text='Miles to Km', variable=radio_var, value=2)
# Pack The Radio Buttons
rb.pack()
rb2.pack()
root.mainloop()
这里的问题是,您试图将字符串temp
除以浮点值dist
。在使用float(temp)
进行转换之前,您需要将temp
转换为浮点值。此外,由于在脚本中设置了temp
一次,因此它只会在分配变量后引用输入框中的值。为了解决这个问题,您必须在convert()
函数内部而不是外部调用dentry.get()