我正试图从输入框中输入并在等式中使用它们。基本上它是
Entry_one - Entry_two * entry_three / 12.但我似乎无法弄清楚如何做到这一点。为了使它更清楚,这是工作的python代码:
a = int(input('Order Amount. '))
c = int(input('Beams Left. '))
l = int(input('Beam Length. '))
a1 = a-c
a2 = a1*l
a3 = a2/12
print ('The Hourly Count Is: ',a3)
现在这里是我试图与tkinter完全相同的代码:
from tkinter import *
root = Tk()
root.geometry('450x450')
root.title('Hourly Production Count')
def calc_result():
subtract_var = int(total_order_ent.get()) - int(beams_left_ent.get())
beams_left_var = int(subtract_var) * int(length_ent.get())
order_output = int(beams_left_var) / 12
answer_var = order_output.get()
label = Label(root,text = answer_var).pack()
button1 = Button(root,text = 'Enter',command = calc_result,fg='black',bg= 'green').pack()
total_order_ent = Entry(root).pack()
Beams_left_ent = Entry(root).pack()
length_ent = Entry(root).pack()
label_total = Label(root,text = 'Enter Total Order Amount').pack()
label_beams_left = Label(root,text = 'Enter Amount Left To Complete').pack()
root.mainloop()
到目前为止我所拥有的。我还没有对小部件使用任何网格放置,因为我只想在我处理它的外观之前让代码工作但是如果有人可以帮助我,我将不胜感激。我已经搜索了其他问题并修改了其他代码,将其作为课程和其他内容进行了尝试,但似乎无法使其正常工作。我得到的一些错误是:
line 23, in <module>
label_length = Label('Enter Beam Length').pack()
Python\Python35\lib\tkinter\__init__.py", line 2109, in _setup
self.tk = master.tk
AttributeError: 'str' object has no attribute 'tk'
答案 0 :(得分:1)
您的代码没有表现出您所说的错误。获取特定错误的唯一可能方法是在导入后省略程序的前三行,并将root
设置为字符串。即使你这样做,你也会得到一个稍微不同的错误 - 它会在你的问题中抱怨第一次使用Button
而不是Label
。
我的猜测是,您没有运行您认为自己的确切代码。无论如何,这个具体问题是由于您没有正确创建根窗口,并且您将字符串作为父级传递给其他小部件。
解决该问题后,您还需要解决此问题中解决的问题:Tkinter: AttributeError: NoneType object has no attribute get。简短版本是,total_order_ent = Entry(root).pack()
会将total_order_ent
设置为None
,因此无法在以后获取窗口小部件的值。
答案 1 :(得分:0)
您可以使用函数中的get方法创建变量并检索它: 如以下documentation中所述:
from tkinter import *
root = Tk()
var_01 = StringVar()
enter_01 = Entry(root, textvariable=var_01)
enter_01.pack()
def get_var():
getvar = var_01.get()
print(getvar)
button_01 = Button(root, text='print variable', command=get_var)
button_01.pack()
root.mainloop()