Python ValueError:以10为基数的int()的文本无效:'';(特金特)

Python ValueError:以10为基数的int()的文本无效:'';(特金特),python,tkinter,valueerror,Python,Tkinter,Valueerror,当我尝试运行此代码时,会出现一个ValueError,暗指函数numRandom。我认为Python可以将int的字符串表示形式传递给int import tkinter import random window = tkinter.Tk() window.geometry('600x500') x = random.randint(1,300) remainingTime = True Attempts = 4 def numRamdom(): global Attempts

当我尝试运行此代码时,会出现一个
ValueError
,暗指函数
numRandom
。我认为Python可以将int的字符串表示形式传递给
int

import tkinter
import random

window = tkinter.Tk()
window.geometry('600x500')

x = random.randint(1,300)
remainingTime = True
Attempts = 4

def numRamdom():
    global Attempts
    while Attempts > 0:
        numWritten = int(entryWriteNumber.get())
        if numWritten > x:
            lblClue.configure(text = 'Its a bigger number')
            Attempts = Attempts -1
        if numWritten < x:
            lblClue.configure(text = 'Its a smaller number')
            Attempts = Attempts -1
        if numWritten == x:
            lblClue.configure(text = 'Congratulations ;)')
            remainingTime = False
            return remainingTime, countdown(0)
        if Attempts == 0:
            remainingTime = False
            return remainingTime, countdown(0), Attempts, gameOver()

entryWriteNumber = tkinter.Entry(window)
entryWriteNumber.grid(column = 0, row = 1, padx = 10, pady = 10)

numRamdom()

window.mainloop()
导入tkinter
随机输入
window=tkinter.Tk()
窗口几何体('600x500')
x=random.randint(1300)
剩余时间=真
尝试次数=4次
def numRamdom():
全球尝试
当尝试次数>0时:
numwrited=int(EntryWriteEnumber.get())
如果numwrited>x:
lblClue.configure(text='这是一个更大的数字')
尝试次数=尝试次数-1
如果numwrited
问题在于,当运行代码时,它直接调用
numRamdom()
,也就是说,最初条目小部件是空的,它们与这些空条目小部件一起运行,因此出现错误。因此,只需指定一个按钮和一个命令,如:

b = tkinter.Button(root,text='Click me',command=numRamdom)
b.grid(row=1,column=0)
确保在
def numRamdom():
之后的
mainloop()之前说这句话。该按钮仅在单击按钮时运行该功能

或者,如果您想减少按钮,请尝试:

方法1:

root.after(5000,numRamdom) #after 5 sec it will execute function
def numRamdom(event):
......

entryWriteNumber.bind('<Return>',numRamdom)
但是请记住,如果用户没有在5秒内正确输入,则会弹出一些错误

方法2:

root.after(5000,numRamdom) #after 5 sec it will execute function
def numRamdom(event):
......

entryWriteNumber.bind('<Return>',numRamdom)
def numRamdom(事件):
......
EntryWriteEnumber.bind(“”,numRamdom)
这样,如果您在输入小部件中按enter键(输入数据后),它将运行该功能

希望这有帮助,如果有任何错误,一定要让我知道


Cheers

问题在于,当运行代码时,它直接调用
numRamdom()
,也就是说,最初条目小部件是空的,它们使用这些空条目小部件运行,因此出现错误。因此,只需指定一个按钮和一个命令,如:

b = tkinter.Button(root,text='Click me',command=numRamdom)
b.grid(row=1,column=0)
确保在
def numRamdom():
之后的
mainloop()之前说这句话。该按钮仅在单击按钮时运行该功能

或者,如果您想减少按钮,请尝试:

方法1:

root.after(5000,numRamdom) #after 5 sec it will execute function
def numRamdom(event):
......

entryWriteNumber.bind('<Return>',numRamdom)
但是请记住,如果用户没有在5秒内正确输入,则会弹出一些错误

方法2:

root.after(5000,numRamdom) #after 5 sec it will execute function
def numRamdom(event):
......

entryWriteNumber.bind('<Return>',numRamdom)
def numRamdom(事件):
......
EntryWriteEnumber.bind(“”,numRamdom)
这样,如果您在输入小部件中按enter键(输入数据后),它将运行该功能

希望这有帮助,如果有任何错误,一定要让我知道


干杯

下面是一个基于您的代码的完全有效的示例。您的问题是试图在条目中有任何内容之前转换条目的内容。要解决此问题,可以添加一个按钮,该按钮调用命令
numRamdom()

导入tkinter
随机输入
window=tkinter.Tk()
窗口几何体('600x500')
x=random.randint(1300)
剩余时间=真
尝试次数=4次
def numRamdom():
全局尝试,lblClue,x
如果尝试次数>0:
numwrited=int(EntryWriteEnumber.get())
如果numwritedx:
configure(text='这是一个较小的数字')
尝试次数=尝试次数-1
其他:
lblClue.configure(文本=‘恭喜;)’)
剩余时间=假
#返回剩余时间,倒计时(0)
如果尝试次数=0:
剩余时间=假
#返回剩余时间、倒计时(0)、尝试次数、游戏结束次数()
其他:
lblClue.configure(text=“您尝试的次数已用完!”)
EntryWriteEnumber=tkinter.Entry(窗口)
EntryWriteEnumber.grid(列=0,行=1,padx=10,pady=10)
entryWriteButton=tkinter.Button(窗口,text=“Push me!”,command=numRamdom)
entryWriteButton.grid(列=1,行=1)
lblClue=tkinter.Label(窗口)
lblClue.grid(行=2,列=1)
window.mainloop()

如果传递的值无法转换为整数,则仍然会出现错误,但这很容易通过
if
语句解决。

下面是一个基于代码的完整示例。您的问题是试图在条目中有任何内容之前转换条目的内容。要解决此问题,可以添加一个按钮,该按钮调用命令
numRamdom()

导入tkinter
随机输入
window=tkinter.Tk()
窗口几何体('600x500')
x=random.randint(1300)
剩余时间=真
尝试次数=4次
def numRamdom():
全局尝试,lblClue,x
如果尝试次数>0:
numwrited=int(EntryWriteEnumber.get())
如果numwritedx:
configure(text='这是一个较小的数字')
尝试次数=尝试次数-1
其他:
lblClue.configure(文本=‘恭喜;)’)
剩余时间=假
#返回剩余时间,倒计时(0)
如果尝试次数=0:
剩余时间=假
#返回剩余时间、倒计时(0)、尝试次数、游戏结束次数()
其他:
lblClue.configure(text=“您尝试的次数已用完!”)
EntryWriteEnumber=tkinter.Entry(窗口)
EntryWriteEnumber.grid(列=0,行=1,padx=10,pady=10)
entryWriteButton=tkinter.Button(窗口,text=“Push me!”,命令