【发布时间】:2019-08-29 19:19:54
【问题描述】:
我是 Python 的 Tkinter 的新手,我想创建一个在其上运行的程序。但是,我的代码无法正常工作。
from tkinter import *
def conv1(self):
gbp0 = 174000000
galleons0 = 34000872
sickles0 = 14
knuts0 = 7
galleons1 = float(galleons0 + sickles0 / 17 + knuts0 / 29 / 17)
fracture = float(gbp0 / galleons1)
convert1 = Toplevel(root)
convert1.title("Pounds Sterling (GBP) to Galleons, Sickles and Knuts Converter")
label1_1 = Label(convert1, text="Type the amount of money in GBP that you would like to convert to Galleons, Sickles and Knuts and press Enter.")
label1_2 = Label(convert1, text="1 Galleon = 5.12 GBP")
label1_3 = Label(convert1, text='GBP:')
label1_1.pack()
label1_2.pack()
label1_3.pack()
usergbpvar = DoubleVar()
usergbp = Entry(convert1, textvariable=usergbpvar)
usergbp.pack()
a = float(usergbpvar.get() / fracture)
galleons = int(a // 1)
a = (a % 1) * 17
sickles = int(a // 1)
a = (a % 1) * 29
if (a % 1) == 0.5:
knuts = int(round(a, 0))
knuts += 1
else:
knuts = int(round(a, 0))
galleons, sickles, knuts = str(galleons), str(sickles), str(knuts)
label1_4 = Label(convert1, text=galleons)
label1_5 = Label(convert1, text=sickles)
label1_6 = Label(convert1, text=knuts)
label1_4.pack()
label1_5.pack()
label1_6.pack()
convert1.mainloop()
root = Tk()
btn1 = Button(root, text='GBP to Galleons, Sickles and Knuts', bg='#555', fg='#ccc', font='16')
btn1.pack()
btn1.bind('<Button-1>', conv1)
root.mainloop()
它应该从输入的数字中计算出三个数字,并将它们显示在屏幕上。但是,当我运行程序时,按下按钮后,我看到所有数字都已经存在并且它们是 0。输入我的数字后,什么都没有改变。
您能告诉我代码中的问题出在哪里吗?
【问题讨论】:
-
您创建了一个条目,然后立即在其上调用
.get()。当然这返回零,用户什么时候有机会输入任何内容?您需要在顶级代码中创建条目,以便用户可以在单击按钮之前输入。
标签: python python-3.x tkinter