首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Tkinter数据不打印

Tkinter数据不打印
EN

Stack Overflow用户
提问于 2018-06-08 07:56:58
回答 1查看 67关注 0票数 1

我正在工作的任务中,我正在显示一个图像给用户。用户将单击图像上的任何位置,并将打印坐标。

Tkinter库canvas用于向用户显示图像,允许用户在图像上的任意位置单击。

printcoords()函数有什么问题-为什么它不显示任何内容?

下面是代码。

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 08:05:42

正如@abamert提到的,您有两个同名的函数,并且您发布的代码具有不必要的复杂性,对于解决问题没有用处。

下面是一个可以用来修复代码的最小示例:

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50751630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档