Tkinter 数据不打印
Tkinter data not printing
我正在执行任务,我正在向用户显示图像。用户将单击图像上的任意位置,并打印坐标。
Tkinter 库canvas
用于向用户显示图像,允许用户单击图像上的任意位置。
printcoords()
函数有什么问题 — 为什么它不显示任何内容?
这是代码。
from Tkinter import *
import ImageTk
from PIL import Image, ImageDraw
from Tkinter import Tk, Menu, Canvas
if __name__ == '__main__':
#function on mouse click
def printcoords(event):
print "tahir"
#outputting x and y coords to console
data.append([event.x,event.y])
print data
#mouseclick event
root = Tk()
img = Image.open("eurecat1.png")
# Draw grid
step_count = 50
draw = ImageDraw.Draw(img)
y_start = 0
y_end = img.height
step_size = int(img.width / step_count)
for x in range(0, img.width, step_size):
line = ((x, y_start), (x, y_end))
draw.rectangle(line, fill="black")
x_start = 0
x_end = img.width
for y in range(0, img.height, step_size):
line = ((x_start, y), (x_end, y))
draw.rectangle(((x_start,y), (x_end, y)), fill="black")
# loadImage(canvas, img)
filename = ImageTk.PhotoImage(img)
canvas = Canvas(root,height=img.size[0],width=img.size[0])
canvas.image = filename # <--- keep reference of your image
canvas.create_image(0,0,anchor='nw',image=filename)
canvas.pack()
canvas.config(scrollregion=canvas.bbox(ALL))
frame = Frame(root, bd=2, relief=SUNKEN)
frame.grid_rowconfigure(0, weight=1)
frame.grid_columnconfigure(0, weight=1)
xscroll = Scrollbar(frame, orient=HORIZONTAL)
xscroll.grid(row=1, column=0, sticky=E+W)
yscroll = Scrollbar(frame)
yscroll.grid(row=0, column=1, sticky=N+S)
canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
canvas.grid(row=0, column=0, sticky=N+S+E+W)
xscroll.config(command=canvas.xview)
yscroll.config(command=canvas.yview)
frame.pack(fill=BOTH,expand=1)
data=[]
#function on mouse click
def printcoords(event):
print "tahir"
#outputting x and y coords to console
data.append([event.x,event.y])
print data
#mouseclick event
canvas.bind("<Button 1>", printcoords)
root.mainloop()
正如@abamert 提到的,您有两个同名的函数,并且您发布的代码具有不必要的复杂性,这些复杂性对解决问题没有用。
这是一个您可以用来修复代码的最小示例:
import Tkinter as tk
def printcoords(event):
print event.x, event.y
if __name__ == '__main__':
root = tk.Tk()
canvas = tk.Canvas(root)
canvas.pack()
canvas.bind("<Button 1>", printcoords)
root.mainloop()
我正在执行任务,我正在向用户显示图像。用户将单击图像上的任意位置,并打印坐标。
Tkinter 库canvas
用于向用户显示图像,允许用户单击图像上的任意位置。
printcoords()
函数有什么问题 — 为什么它不显示任何内容?
这是代码。
from Tkinter import *
import ImageTk
from PIL import Image, ImageDraw
from Tkinter import Tk, Menu, Canvas
if __name__ == '__main__':
#function on mouse click
def printcoords(event):
print "tahir"
#outputting x and y coords to console
data.append([event.x,event.y])
print data
#mouseclick event
root = Tk()
img = Image.open("eurecat1.png")
# Draw grid
step_count = 50
draw = ImageDraw.Draw(img)
y_start = 0
y_end = img.height
step_size = int(img.width / step_count)
for x in range(0, img.width, step_size):
line = ((x, y_start), (x, y_end))
draw.rectangle(line, fill="black")
x_start = 0
x_end = img.width
for y in range(0, img.height, step_size):
line = ((x_start, y), (x_end, y))
draw.rectangle(((x_start,y), (x_end, y)), fill="black")
# loadImage(canvas, img)
filename = ImageTk.PhotoImage(img)
canvas = Canvas(root,height=img.size[0],width=img.size[0])
canvas.image = filename # <--- keep reference of your image
canvas.create_image(0,0,anchor='nw',image=filename)
canvas.pack()
canvas.config(scrollregion=canvas.bbox(ALL))
frame = Frame(root, bd=2, relief=SUNKEN)
frame.grid_rowconfigure(0, weight=1)
frame.grid_columnconfigure(0, weight=1)
xscroll = Scrollbar(frame, orient=HORIZONTAL)
xscroll.grid(row=1, column=0, sticky=E+W)
yscroll = Scrollbar(frame)
yscroll.grid(row=0, column=1, sticky=N+S)
canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
canvas.grid(row=0, column=0, sticky=N+S+E+W)
xscroll.config(command=canvas.xview)
yscroll.config(command=canvas.yview)
frame.pack(fill=BOTH,expand=1)
data=[]
#function on mouse click
def printcoords(event):
print "tahir"
#outputting x and y coords to console
data.append([event.x,event.y])
print data
#mouseclick event
canvas.bind("<Button 1>", printcoords)
root.mainloop()
正如@abamert 提到的,您有两个同名的函数,并且您发布的代码具有不必要的复杂性,这些复杂性对解决问题没有用。
这是一个您可以用来修复代码的最小示例:
import Tkinter as tk
def printcoords(event):
print event.x, event.y
if __name__ == '__main__':
root = tk.Tk()
canvas = tk.Canvas(root)
canvas.pack()
canvas.bind("<Button 1>", printcoords)
root.mainloop()