문제

I've been working on trying to get boundary inputs working in a small game of mine.

At first I got this error:

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.2/tkinter/__init__.py", line 1402, in __call__
    return self.func(*args)
  File "/home/ppppwn3d/workspace/Python/JailBreakBob/JailBreakBob.py", line 173, in     buttonclick_gamescreen
    if entryx > 10 or entryx < -10 or entryy > 10 or entryy < -10 :
TypeError: unorderable types: str() > int()

So I realised that I had to convert the string I got from the entry widget into an integer, I looked up the code for doing on both stackoverflow and elsewhere on the web but it doesn't seem to be working.

I've tried both:

int (e1.get())
int (e2.get())

and

int (entryx)
int (entryy)

within

while pressed == 8 :
    int (e1.get())
    int (e2.get())
    entryx = e1.get()
    entryy = e2.get()
    answerx = answerlistx[randomimage]
    answery = answerlisty[randomimage]

    if entryx == answerx and entryy == answery:
        canvas.delete(images)
        randomimage = random.randrange(0,49+1)
        scorecounter = scorecounter + 1
        game = PhotoImage(file=imagelist[randomimage])
        images = canvas.create_image(30, 65, image = game, anchor = NW)
        e1.delete(0, END)   
        e2.delete(0, END)
        pressed = ''
    if entryx > 10 or entryx < -10 or entryy > 10 or entryy < -10 :
        wrong = canvas.create_image(30, 65, image = outside, anchor = NW)
        e1.delete(0, END)   
        e2.delete(0, END)
        pressed = ''
    else:
        wrong = canvas.create_image(30, 65, image = incorrect, anchor = NW)
        e1.delete(0, END)   
        e2.delete(0, END)
        pressed = ''

Without any luck. This was from following what I've read so far but I'm still getting the same error from above. Could someone tell me what I'm doing wrong please?

Thanks in advance!

도움이 되었습니까?

해결책

This below statements:

int (e1.get())   # This is actually doing nothing.
int (e2.get())
entryx = e1.get()
entryy = e2.get()

doesn't assign the integer value to entryx or entryy. Perhaps you wanted something like this:

entryx = int (e1.get())
entryy = int (e2.get())

다른 팁

Lines int (e1.get()) and int (e2.get()) do actually nothing. Instead you should convert e1.get() and e2.get() to int while assigning them to entryx and entryy:

entryx = int(e1.get())
entryy = int(e2.get())

int() doesn't convert items in place:

>>> s = "100"
>>> int(s)
100
>>> s
'100'
>>> type(s)
<type 'str'>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top