变量显然没有定义

时间:2016-03-09 17:02:35

标签: python tkinter python-3.4

我在单独的文件中创建了一个函数问题。

这是我的根程序:

#Import TKINTER toolset:
from tkinter import *
from mousexy import *

#Starting variables:
#Defining mouse x and y coordinates

global mouse_x
global mouse_y
mouse_x = 0
mouse_y = 0

#Main window:
window = Tk()
window.title = ("Solomon's animation tool")

#Workspace and Canvas:
global wrkspace
wrkspace =  Frame(window, bg="red",width=640,height=480)
global canvas
canvas = Canvas(wrkspace,bg="white",width=640,height=480)

#Keyframe editor: (DO LATER)

#Test for finding mouse xy
canvas.bind("<Button-1>",find_mouse_xy)

wrkspace.pack()
canvas.pack()

#Runs window:
window.mainloop()

这是我在单独文件(mousexy.py)中的函数

def find_mouse_xy(event):
    mouse_x = canvas.winfo_pointerx()
    mouse_y = canvas.winfo_pointery()
    print ("x: " + str(mouse_x))
    print ("y: " + str(mouse_y))

当我运行我的root程序并单击时,控制台告诉我canvas没有明确定义,我做错了什么?

mouse_x = canvas.winfo_pointerx()
NameError: name 'canvas' is not defined
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python34\lib\tkinter\__init__.py", line 1487, in __call__
    return self.func(*args)
  File "C:\Users\SOLLUU\Documents\Python\Animation software\mousexy.py", line 2, in find_mouse_xy
    mouse_x = canvas.winfo_pointerx()
NameError: name 'canvas' is not defined
>>>

1 个答案:

答案 0 :(得分:1)

find_mouse_xy正在寻找mousexy.canvas。您定义了__main__.canvas。它们是两个完全独立的变量。

你可能想要的是

def find_mouse_xy(event):
    # Coordinate of the mouse when the event occurred.
    mouse_x = event.x
    mouse_y = event.y
    # What object was clicked? This handler could
    # be attached to many different widgets in your program.
    where = event.widget
    # ...