Python Can';t使用Tkinter中的输入框将字符串转换为整数

Python Can';t使用Tkinter中的输入框将字符串转换为整数,python,tkinter,Python,Tkinter,我对tkinter和python基本上是新手,我有一个无法解决的问题。 在我的程序中,我想从用户那里获取输入,并将其转换为一个整数,以便以后使用该变量。主要问题是,我得到了以10为基数的int()无效文本错误:“”。我在网上搜索时尝试了不同的方法,但没有一种有效。非常感谢您的帮助。非常感谢。 我的代码: from tkinter import * import tkinter as tk window = Tk() window.title("Controlla quote&quo

我对tkinter和python基本上是新手,我有一个无法解决的问题。 在我的程序中,我想从用户那里获取输入,并将其转换为一个整数,以便以后使用该变量。主要问题是,我得到了以10为基数的int()无效文本错误:“”。我在网上搜索时尝试了不同的方法,但没有一种有效。非常感谢您的帮助。非常感谢。

我的代码:

from tkinter import *
import tkinter as tk
window = Tk()

window.title("Controlla quote")
window.geometry('400x150')

#binari
binari_num=0
def binari(number):
    if number==1:
        binari_num=1
        print("binari= ",binari_num)
    elif number==2:
        binari_num=2
        print("binari= ",binari_num)
    else:
        pass
    return binari_num
#radiobuttons
info = IntVar()
binari_1 = Radiobutton(window, text="1", command=lambda:binari(info.get()),variable=info,value=1).grid(column=1, row=0)
binari_2 = Radiobutton(window, text="2", command=lambda:binari(info.get()),variable=info,value=2).grid(column=2, row=0)
#binari label
binari_scritta=Label(window, text="Binari:").grid(column=0, row=0, stick=W)

#stazionamenti
stazionamenti_label=Label(window, text="Stazionamenti: ").grid(column=0, row=1, stick=W)
stazionamenti_entry=Entry(window)
stazionamenti_entry.grid(column=1, row=1, stick=W)
#conversion stazionamenti
stazionamenti_str= stazionamenti_entry.get()
stazionamenti_num= int(stazionamenti_str)


#avanti
def avanti():
    pass
avanti_btn=Button(window, text="Avanti", command=avanti()).grid(columnspan=50, stick=E)

window.mainloop()
你能试试吗

binari_1 = Radiobutton(window, text="1", command=lambda:binari(int(info.get())),variable=info,value=1).grid(column=1, row=0)

binari_2 = Radiobutton(window, text="2", command=lambda:binari(int(info.get())),variable=info,value=2).grid(column=2, row=0)

我认为返回的方法或对象似乎有所不同。尝试使用
int()
函数转换它

问题是代码会立即执行,当调用
stationamini\u entry.get()
时,它基本上是一个空字符串
“”
int()。带有空格、空字符串或非数字字符的字符串会导致此错误

该错误表示“提供的字符串不能转换为int”

您可以做的是创建一个函数并在需要时调用它。
stazionamenti\u entry.get()
,并确保
stazionamenti\u entry
中有数字数据。更准确地说,您应该在
avanti
函数中执行此操作

您可以在
statzionamenti_num=int(statzionamenti_str)
之前添加一些检查,如:

如果Statzionamenti_街:
Statzionamenti_num=int(Statzionamenti_str)
这将确保字符串不是空的

应行动计划要求:

。
.
.
stazionamenti_label=label(窗口,text=“stazionamenti:”).grid(列=0,行=1,棒=W)
stazionamenti_入口=入口(窗口)
stazionamenti_entry.grid(列=1,行=1,棒=W)
#转换斯塔齐亚曼蒂酒店
def helper():
全球国家统计局
全球Statzionamenti_项目
如果statzionamenti_entry.get():
stationamenti_num=int(stationamenti_entry.get())
#阿凡蒂
def avanti():
助手()
打印(Statzionamenti_num)
avanti_btn=按钮(窗口,text=“avanti”,command=avanti).grid(列span=50,杆=E)
window.mainloop()

我以这个结尾。但如果我打印(statzionamenti_num),它不会在abdullahQureshee处打印

#stazionamenti
stazionamenti_label=Label(window, text="Stazionamenti: ").grid(column=0, row=1, stick=W)
stazionamenti_entry=Entry(window)
stazionamenti_entry.grid(column=1, row=1, stick=W)
#conversion stazionamenti
global stazionamenti_str
global stazionamenti_num
stazionamenti_str=""
def stazionamenti_convert():
    stazionamenti_num= int(stazionamenti_str)


#avanti
def avanti():
    if stazionamenti_str:
        stazionamenti_convert()
avanti_btn=Button(window, text="Avanti", command=avanti()).grid(columnspan=50, stick=E)
window.mainloop()

对不起,也许我不够清楚。我需要将stazionamenti输入框转换为整数。现在我使用了两个变量:stationamenti_str和stationamenti_num.:)因此,如果我想制作一个按钮,并且按钮的命令执行代码以获取stationamenti_num,我可以使用“return stationamenti_num;”结束此操作在我的与按钮相关的功能中?
命令中的功能不应
返回任何内容。您可以在
avanti
中复制您的
stazionamenti_str.get()
,以及我描述的字符串检查。您需要在此函数中声明
global stationi_num
。不要在
command
中调用函数,即移除括号。在此函数中声明stationi_num全局。这会将变量标记为外部可用的变量,并将其更改。num将被更新。我发布了一个答案,只是想让你知道:)在convert函数中编写全局语句它仍然不工作。。。你能把完整的密码寄出去吗?这将是令人惊讶的;我更新了我的答案。过来看。它有代码碎片。您应该删除这两行:
statzionamenti\u str=statzionamenti\u entry.get()
statzionamenti\u num=int(statzionamenti\u str)
。在创建
条目之后立即调用它们是没有意义的,因为正如错误所说,您将得到空字符串。