【发布时间】:2020-04-20 05:21:05
【问题描述】:
我想要一个有 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()
【问题讨论】:
-
首先你需要修复缩进,这在 Python 中很关键。
-
command=prod()应该是command=prod,并且所有其他按钮都类似。 -
您确定用户输入的数字已转换为整数吗?如果不是,那么根据我对您的程序的检查,它们属于字符串形式;在将检索到的数字相乘之前将它们转换为整数。这应该可以成功。如果您需要帮助,请提供更多详细信息,我可能会提供帮助。
-
@martineau:你的评论有点混乱——你不必使用
textvariable来从Entry小部件中获取数据。你可以在没有文本变量的情况下做到这一点。 -
@Bryan:我相信你是对的。我只是按照this documentation 所说的去做(参见关于
textvariable选项的部分)。我将删除误导性评论(尽管按照所说的去做)。
标签: python python-3.x tkinter calculator