2015-06-11 3 views
0

Я пытался добавить перетаскиваемый объект окна в холст tkinter. Он работал, когда не было функции obj, но я хочу, чтобы она была там для определенных целей. Теперь, когда я пытаюсь это сделать, на холсте не появляется кнопка.Объект Tkinter Canvas не отображается

from tkinter import * 
import app 

def obj(can,text): 
    b1 = "up" 
    xold, yold = None, None 


    def main(): 
     global aaa 
     global frame 
     global text 
     global drawing_area 
     drawing_area = can 


     drawing_area.create_window(50,50,tags='aaa',window=text) 

     text.bind("<Motion>", motion) 
     text.bind("<ButtonPress-1>", b1down) 
     text.bind("<ButtonRelease-1>", b1up) 



    def b1down(event): 
     global b1 
     b1 = "down"   


    def b1up(event): 
     global b1, xold, yold 
     b1 = "up" 
     xold = None   
     yold = None 

    def motion(event): 
     global frame 
     global aaa 
     global text 
     global drawing_area 
     if b1 == "down": 
      global xold, yold 
      if xold is not None and yold is not None: 
          drawing_area.move('aaa',event.x,event.y) 

      xold = event.x 
      yold = event.y 

root = Tk() 
drawing_area = Canvas(root,height=500,width=700,bg='Blue') 
text=Button(drawing_area,text='Test') 
drawing_area.pack() 
if __name__ == "__main__": 
    obj(drawing_area,text) 
+0

Вы пробовали что-то так же просто, как добавить несколько операторов печати, чтобы проверить, вызваны ли функции, которые вы вызываете _think_, _actually_? –

ответ

0

Ваша obj функция определяет три переменные и четыре функции, но не делает ничего.

Попробуйте добавить main() в качестве последней строки вашего определения obj().