我想要一个有4个按钮和2个输入项的计算器。我的问题是什么?我不知道如何修复它不能将str类型的非整型数与序列相乘,也不能将entry * entry相乘。
我也不知道我的输出在哪里,以及如何使用它。
from tkinter import ttk
from tkinter import *
import tkinter as tk
#the environment
calc=tk.Tk()
calc.title("Calculator")
#-------------------------------------
#lables and their data entry
tk.Label(calc,text="enter your first number:").grid(row=0)
tk.Label(calc,text="enter your second number:").grid(row=1)
e1=tk.Entry(calc)
e2=tk.Entry(calc)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
x1=e1.get()
x2=e2.get()
tk.Label(calc,text="your result is:").grid(row=3)
# a free variable for get output,is this really need?
lbl=list()
#---------------------------
#the functions but my entry are entry type
def prod():
lbl=print(x1*x2)
def div():
lbl=print(x1/x2)
def sum():
lbl=print(x1+x2)
def min():
lbl=print(x1-x2)
#-------------------------------
#buttons and function in them as a command
btn1=tk.Button(calc,text="*",command=prod()).grid(row=0,column=2)
btn2=tk.Button(calc,text="/",command=div()).grid(row=1,column=2)
btn3=tk.Button(calc,text="+",command=sum()).grid(row=2,column=2)
btn4=tk.Button(calc,text="-",command=min()).grid(row=3,column=2)
#--------------------------------------------------------------------
#The answer which i need it
print("your answer is:")
calc.mainloop()发布于 2020-01-01 04:59:25
在GUI编程中,您需要在需要时获取小部件的值,而不是在创建它们时获取它们的值。
此外,小部件还返回字符串值。如果您正在对它们进行数学运算,则需要首先将它们转换为数字。
如果要在窗口中显示结果,可以使用configure方法更新标注微件
例如,您的prod定义可能如下所示:
def prod():
x1 = int(e1.get())
x2 = int(e2.get())
result = x1 * x2
result_label.configure(text=str(result))然后你需要做另外两件事。首先,您需要为结果创建标签,并将小部件存储在一个变量中。为此,必须将微件的创建与布局分开,因为调用grid会导致变量设置为None
result_label = tk.Label(calc,text="your result is:")
result_label.grid(row=3)最后,需要为您的按钮提供对该函数的引用。您当前所做的是调用函数并将结果赋给command属性。
您的按钮应如下所示。请注意,prod后面没有():
btn1 = tk.Button(calc, text="*", command=prod)
...
btn1.grid(row=0,column=2)另外,我认为对于具有公共父级的所有小部件,将所有小部件创建代码分组在一起,然后将所有对grid或pack的调用分组在一起,可以使代码更易于阅读、维护和可视化。
例如:
btn1 = tk.Button(...)
btn2 = tk.Button(...)
btn3 = tk.Button(...)
btn4 = tk.Button(...)
btn1.grid(row=0,column=2)
btn2.grid(row=1,column=2)
btn3.grid(row=2,column=2)
btn4.grid(row=3,column=2)https://stackoverflow.com/questions/59548168
复制相似问题