当前位置: 首页 > 知识库问答 >
问题:

如何通过输入框将多个值从一个函数返回到另一个函数?(ValueError:无法将字符串转换为浮点:)

水昊阳
2023-03-14

我对tkinter和python确实是个新手,我尝试使用tkinter创建GUI。这个示例只是计算两个数的乘法和加法并返回,当我不能将字符串转换为输入时(这意味着没有输入),我只能生成结果。那么,我如何将这2个值返回给另一个函数呢?

import tkinter as tk

'''OS'''
root = tk.Tk()
root.title("Simple Box")
operator=""

canvas = tk.Canvas(root, height=400,width=500,bg="White")
canvas.pack()

frame=tk.Frame(root, bg="Light Blue")
frame.place(relwidth=0.9,relheight=0.9, relx=0.05, rely=0.05)
'''Variable '''
num1= tk.StringVar()
num2= tk.StringVar()

''' function'''
def operation1():
    global number1, number2
    multi_add =tk.Tk()
    multi_add.title("Multiplication and Addition")

    tk.Label(multi_add, font =("Helvetica", 20),
             text="Enter the first number:").grid(row=0)
    tk.Label(multi_add, font =("Helvetica", 20),
             text="Enter the second number").grid(row=1)

    number1=tk.Entry(multi_add, textvariable = num1).grid(row=0, column=1)
    number2=tk.Entry(multi_add, textvariable = num2).grid(row=1, column=1)

    return num1, num2 


def result():
    num3 = float(num1.get()) + float(num2.get())
    num4 = float(num1.get()) * float(num2.get())
    print("the result is ",num3 ,"and", num4)

'''buttons'''
result=tk.Button(frame, text="Result", font=('airal', 30 ,'bold'), height="1"
                 ,width="6", padx=10,pady=5, fg="Black",
                 bg="yellow", command= result)
result.place(x=300 , y=305)

op1=tk.Button(frame, text="operation 1", height="2", width="10", padx=10,
             pady=5, fg="Black", bg="yellow", command = operation1)
op1.place(x = 17, y = 310)


root.mainloop()

TracebackError:

D Tkinter回调中的异常:Traceback(最近一次调用):文件“/library/framework/python.framework/versions/3.7/lib/python3.7/Tkinter/init.py”,第1705行,在call return self.func(*args)文件“/users/pozzphut/desktop/project python/figurefunction transfer.py”,第37行,在结果num3=float(num1.get())+float(num2.get())中值错误:无法将字符串转换为float:

共有1个答案

夏锐藻
2023-03-14

以下是解决方案:

如果在同一行中使用.grid(),则number1number2将返回none并且我们无法获取数据。

修改如下:

    number1=tk.Entry(multi_add, textvariable = num1)
    number2=tk.Entry(multi_add, textvariable = num2)
    number1.grid(row=0, column=1)
    number2.grid(row=1, column=1)
def result():
    num3 = float(number1.get()) + float(number2.get())
    num4 = float(number1.get()) * float(number2.get())
import tkinter as tk

'''OS'''
root = tk.Tk()
root.title("Simple Box")
operator=""

canvas = tk.Canvas(root, height=400,width=500,bg="White")
canvas.pack()

frame=tk.Frame(root, bg="Light Blue")
frame.place(relwidth=0.9,relheight=0.9, relx=0.05, rely=0.05)
'''Variable '''
num1= tk.StringVar()
num2= tk.StringVar()

''' function'''
def operation1():
    global number1, number2
    multi_add =tk.Tk()
    multi_add.title("Multiplication and Addition")

    tk.Label(multi_add, font =("Helvetica", 20),
             text="Enter the first number:").grid(row=0)
    tk.Label(multi_add, font =("Helvetica", 20),
             text="Enter the second number").grid(row=1)

    number1=tk.Entry(multi_add, textvariable = num1)
    number2=tk.Entry(multi_add, textvariable = num2)
    number1.grid(row=0, column=1)
    number2.grid(row=1, column=1)

def result():
    num3 = float(number1.get()) + float(number2.get())
    num4 = float(number1.get()) * float(number2.get())
    print("the result is ",num3 ,"and", num4)

'''buttons'''
result=tk.Button(frame, text="Result", font=('airal', 30 ,'bold'), height="1"
                 ,width="6", padx=10,pady=5, fg="Black",
                 bg="yellow", command= result)
result.place(x=300 , y=305)

op1=tk.Button(frame, text="operation 1", height="2", width="10", padx=10,
             pady=5, fg="Black", bg="yellow", command = operation1)
op1.place(x = 17, y = 310)


root.mainloop()
import tkinter as tk

'''OS'''
root = tk.Tk()
root.title("Simple Box")
operator=""

canvas = tk.Canvas(root, height=400,width=500,bg="White")
canvas.pack()

frame=tk.Frame(root, bg="Light Blue")
frame.place(relwidth=0.9,relheight=0.9, relx=0.05, rely=0.05)

''' function'''
def operation1():
    global number1, number2
    multi_add =tk.Tk()
    multi_add.title("Multiplication and Addition")

    tk.Label(multi_add, font =("Helvetica", 20),
             text="Enter the first number:").grid(row=0)
    tk.Label(multi_add, font =("Helvetica", 20),
             text="Enter the second number").grid(row=1)

    number1=tk.Entry(multi_add)
    number2=tk.Entry(multi_add)
    number1.grid(row=0, column=1)
    number2.grid(row=1, column=1)

def result():
    num3 = float(number1.get()) + float(number2.get())
    num4 = float(number1.get()) * float(number2.get())
    print("the result is ",num3 ,"and", num4)

'''buttons'''
result=tk.Button(frame, text="Result", font=('airal', 30 ,'bold'), height="1"
                 ,width="6", padx=10,pady=5, fg="Black",
                 bg="yellow", command= result)
result.place(x=300 , y=305)

op1=tk.Button(frame, text="operation 1", height="2", width="10", padx=10,
             pady=5, fg="Black", bg="yellow", command = operation1)
op1.place(x = 17, y = 310)


root.mainloop()
 类似资料:
  • 问题内容: 选项:使用元组 考虑下面这个简单的例子: 但是,随着返回值的数量增加,这很快就会成为问题。如果要返回四个或五个值怎么办?当然,你可以继续修改它们,但是很容易忘记哪个值在哪里。在任何想要接收它们的地方打开它们的包装也是很丑陋的。 选项:使用字典 下一步的逻辑步骤似乎是引入某种“记录符号”。在Python中,一种明显的方法是使用dict。 考虑以下: (请注意,y0,y1和y2只是抽象标识

  • 我正在研究将字符串从一个字符集转换为另一个字符集,阅读了很多关于它的示例,最终找到了下面的代码,这对我来说很好,作为一个字符集编码的新手,我想知道,这是否是正确的方法。 要将字符串从ASCII转换为EBCDIC,我必须执行以下操作: 要将EBCDIC转换为ASCII,我必须:

  • 假设我有以下数组列表: 并且必须遵守规则: 从数组列表 1 开始,我想形成新的以下数组列表: <李>猫狗 <李>鼠蛇 无论如何都可以这样做。我目前还没有找到任何字符串到字符串转换的内容。

  • 问题内容: 表: 有了答案,我在这里得到了利用$ compile的这种方式 现在,当单击按钮时,我什至调用一个模态,并命令对象使用ng-model 感谢您的帮助,它运作良好。 问题答案: 编辑 :添加了用于演示 $ compile 用法的代码段 在html中,只有一个用于初始化应用程序的标签和一个用于初始化控制器的div。 在controller中,两个链接被创建为简单字符串,但分别具有两个,然后

  • 问题内容: 如果我有 我有: 然后,我可以成功执行以下操作: 但是,假设我要在doSomething中添加另一个参数,例如: 如果我这样称呼,Go在编译时会抱怨: 带有: 有没有办法做到这一点,还是我应该放弃并将返回值分配给某些引用,并将msg和这些值传递给? 问题答案: 在规范中对此进行了描述。它要求内部函数返回所有参数的正确类型。没有多余的参数以及返回多个值的函数。 作为一种特殊情况,如果一个

  • 所以,我试图用discord js和sqlite3做一件事,但在过去的几个小时里,我一直在讨论这个问题,我仍然不知道如何解决它。 因此,我试图获取仅在中可用的数据,但我不知道如何将其传递出去,以便返回预期值。我已经尝试过使用全局变量,把它放在更大的范围内,但我仍然不知道如何做到这一点。 对不起,如果我弄糊涂了,我不习惯一直问问题。 编辑:应该说我正在使用NPMSqlite3模块。https://w