猿问

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

一般来说,我对 tkinter 和 python 很陌生,我遇到了一个无法解决的问题。在我的程序中,我想获取用户的输入并将其转换为整数以便稍后使用该变量。主要问题是我收到错误 invalidliteral for int() with base 10: ''。我通过网上搜索尝试了不同的方法,但没有一个起作用。非常感谢任何帮助。谢谢你! Visual Studio 上的错误消息

我的代码:


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()


慕尼黑8549860
浏览 131回答 3
3回答

神不在的星期二

问题是代码会立即执行,并且当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 stazionamentidef helper():    global stazionamenti_num    global stazionamenti_entry    if stazionamenti_entry.get():        stazionamenti_num = int(stazionamenti_entry.get())#avantidef avanti():    helper()    print(stazionamenti_num)avanti_btn=Button(window, text="Avanti", command=avanti).grid(columnspan=50, stick=E)window.mainloop()

PIPIONE

你能试一下吗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()函数转换它

茅侃侃

我以此结束。但如果我打印(stazionamenti_num)它不会打印它@abdullahQureshee#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 stazionamentiglobal stazionamenti_strglobal stazionamenti_numstazionamenti_str=""def stazionamenti_convert():    stazionamenti_num= int(stazionamenti_str)#avantidef avanti():    if stazionamenti_str:        stazionamenti_convert()avanti_btn=Button(window, text="Avanti", command=avanti()).grid(columnspan=50, stick=E)window.mainloop()
随时随地看视频慕课网APP

相关分类

Python
我要回答