为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 Tkinter 中的输入框将字符串转换为整数

无法使用 Tkinter 中的输入框将字符串转换为整数

慕尼黑8549860 2023-10-11 20:12:36
一般来说,我对 tkinter 和 python 很陌生,我遇到了一个无法解决的问题。在我的程序中,我想获取用户的输入并将其转换为整数以便稍后使用该变量。主要问题是我收到错误 invalidliteral for int() with base 10: ''。我通过网上搜索尝试了不同的方法,但没有一个起作用。非常感谢任何帮助。谢谢你! Visual Studio 上的错误消息我的代码:from tkinter import *import tkinter as tkwindow = Tk()window.title("Controlla quote")window.geometry('400x150')#binaribinari_num=0def 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#radiobuttonsinfo = 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 labelbinari_scritta=Label(window, text="Binari:").grid(column=0, row=0, stick=W)#stazionamentistazionamenti_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 stazionamentistazionamenti_str= stazionamenti_entry.get()stazionamenti_num= int(stazionamenti_str)#avantidef avanti():    passavanti_btn=Button(window, text="Avanti", command=avanti()).grid(columnspan=50, stick=E)window.mainloop()
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

问题是代码会立即执行,并且当stazionamenti_entry.get()被调用时,它基本上是一个空字符串""。int()需要一个有效的字符串,其中仅包含数字和可选的第一个减号。带有空格或空字符串或非数字字符的字符串会出现此错误。


该错误意味着“提供的字符串无法转换为 int”。


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


您可以在之前添加一些检查,stazionamenti_num= int(stazionamenti_str)例如:


if stazionamenti_str :

    stazionamenti_num= int(stazionamenti_str)

这将确保字符串不为空。


应OP要求:


.

.

.

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



def helper():

    global stazionamenti_num

    global stazionamenti_entry

    if stazionamenti_entry.get():

        stazionamenti_num = int(stazionamenti_entry.get())

#avanti

def avanti():

    helper()

    print(stazionamenti_num)


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

window.mainloop()


查看完整回答
反对 回复 2023-10-11
?
PIPIONE

TA贡献1829条经验 获得超9个赞

你能试一下吗

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)

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


查看完整回答
反对 回复 2023-10-11
?
茅侃侃

TA贡献1842条经验 获得超21个赞

我以此结束。但如果我打印(stazionamenti_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()


查看完整回答
反对 回复 2023-10-11
  • 3 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信