Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 8, 2014 21:02:06

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Функция перестает работать после привязки к событию (Canvas)

Привет,

застрял, прошу совета:

функция moveRight() работает корректно (выводит print):

def moveRight():
    L = [0, 2, 0, 4, 0]  
    merge = False
    num = 2
    moveX = 0
    moveY = 0                                     
    for i in L:
        if i > num:
            break
        elif i == 0:
            moveX += 124
            continue
        elif i == num:
            moveX += 124
            merge = True
            break
    if moveX > 0:
        print(moveX, moveY, num, merge)
    input()
if __name__ == '__main__':
    moveRight()

Но когда ее запихнуть в клас и привязать к событию щелчка мыши, print после щелчка не выводится. Вообще ноль реакции:
from tkinter import *
class MMain():
    def __init__(self, parent = None):
        canvas = Canvas(width=508, height=508, bg = '#aa9d93')
        canvas.pack(fill = BOTH, expand = YES)
        canvas.bind('<ButtonPress-1>', self.moveRight)
        self.canvas = canvas
        self.photo = PhotoImage(file = 'numbers\\small_2.gif')
        self.canvas.create_image(10, 10, image = self.photo, anchor = NW, tag = 'asd')
    def moveRight(self, event):
        L = [0, 2, 0, 4, 0]  
        merge = False
        num = 2
        moveX = 0
        moveY = 0                                      
        for i in L:
            if i > num:
                break
            elif i == 0:
                moveX += 124
                continue
            elif i == num:
                moveX += 124
                merge = True
                break
        if moveX > 0:
            print(moveX, moveY, num, merge)
if __name__ == '__main__':
    MMain()
    mainloop()

Почему?

Отредактировано WoMax (Авг. 8, 2014 21:03:29)

Офлайн

#2 Авг. 8, 2014 22:59:25

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Функция перестает работать после привязки к событию (Canvas)

Все работает….

from tkinter import *
class MMain():
    def __init__(self, parent = None):
        canvas = Canvas(width=508, height=508, bg = '#aa9d93')
        canvas.pack(fill = BOTH, expand = YES)
        canvas.bind('<ButtonPress-1>', self.moveRight)
    def moveRight(self, event):
        L = [0, 2, 0, 4, 0]
        merge = False
        num = 2
        moveX = 0
        moveY = 0
        for i in L:
            if i > num:
                break
            elif i == 0:
                moveX += 124
                continue
            elif i == num:
                moveX += 124
                merge = True
                break
        if moveX > 0:
            print(moveX, moveY, num, merge)
if __name__ == '__main__':
    MMain()
    mainloop()

Вывод

(248, 0, 2, True)

Офлайн

#3 Авг. 8, 2014 23:09:17

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Функция перестает работать после привязки к событию (Canvas)

Оо, у меня реально это не работает, просто не реагирует.

Версия питона 3.4.1?

Спасибо за быстрый отзыв.

Офлайн

#4 Авг. 8, 2014 23:15:23

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Функция перестает работать после привязки к событию (Canvas)

Файл кода. Ждемс…

Офлайн

#5 Авг. 8, 2014 23:24:17

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Функция перестает работать после привязки к событию (Canvas)

Прикрепил.

Прикреплённый файлы:
attachment q2.py (1023 байта)

Офлайн

#6 Авг. 8, 2014 23:29:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Функция перестает работать после привязки к событию (Canvas)

В лине в python 3.5.0a0 первый код работает.



Отредактировано py.user.next (Авг. 8, 2014 23:56:58)

Офлайн

#7 Авг. 8, 2014 23:35:09

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Функция перестает работать после привязки к событию (Canvas)

у мения на вин7 и 3.4.1 не работает.

что ж такое..

upt.: только что заметил что прикрепил файл с кодом где event заменен на ‘<Right>’ вместо ‘<ButtonPress-1>’, но у меня не работает ни так, ни так.

Отредактировано WoMax (Авг. 8, 2014 23:43:27)

Офлайн

#8 Авг. 8, 2014 23:52:31

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Функция перестает работать после привязки к событию (Canvas)

Всем спасибо, проблема решена

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version