0

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!

4

2 回答 2

1

以下陈述:

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

不将整数值分配给entryxor entryy。也许你想要这样的东西:

entryx = int (e1.get())
entryy = int (e2.get())
于 2013-08-11T09:12:37.937 回答
1

int (e1.get())int (e2.get())实际上什么都不做。相反,您应该在将它们分配给e1.get()and时将其转换为and :e2.get()intentryxentryy

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

int()不会就地转换项目:

>>> s = "100"
>>> int(s)
100
>>> s
'100'
>>> type(s)
<type 'str'>
于 2013-08-11T09:12:54.153 回答