【问题标题】:tkinter report frame as well as mouse coordinatestkinter 报告框架以及鼠标坐标
【发布时间】:2023-03-31 05:22:02
【问题描述】:
 def mouse_click(event):
    #'reports' to both terminal and results text box
    parent_name = Frame.winfo_parent(root)
    parent = Frame._nametowidget(parent_name)
    result = ("{0}: {1},{2}\n ".format('Clicked at', event.x, event.y))
    print('clicked at',parent,  event.x, event.y)

from tkinter import *


root = Tk()
root.title("Change Text")
root.geometry('700x500')

top=root.winfo_toplevel()
for rn in range(0,9): # rn = row number
    top.rowconfigure(rn, weight=1)
top.rowconfigure(rn, weight=0)    
for cn in range(0,5): # cn = column number
    top.columnconfigure(cn, weight=1)
# FRAME 1
frame1 = Frame(root,  borderwidth = 2, background = '#EFE0CD', relief = RIDGE,width = 25, height = 20)
frame1.bind("<Button-1>", mouse_click)
frame1.grid(column = 0, row = 0, columnspan = 2, rowspan = 3, sticky = N+S+E+W)
frame1_lbl = Label(frame1, text='Frame 1', font='comic-sans-MS 10 ', fg ='red', bg = '#EFE0CD')
frame1_lbl.grid(row=0, column =0)

# FRAME 2
frame2 = Frame(root,  borderwidth = 2, background = '#CCC6B0', relief = RIDGE,width = 25, height = 20)
frame2.bind("<Button-1>", mouse_click)
frame2.grid(column = 0, row = 3, columnspan = 2, rowspan = 3, sticky = N+S+E+W)
frame2_lbl = Label(frame2, text='Frame 2', font='comic-sans-MS 10', fg ='red', bg = '#CCC6B0')
frame2_lbl.grid(row=0, column =0,)
root.mainloop()

我知道这是一个非常愚蠢的问题。如何识别单击鼠标的框架,以便报告在 x y 坐标处打印单击的 frame1 或 frame2?我发现了一些关于使用 winfo_parent 但显然没有正确使用它的信息。 谢谢

【问题讨论】:

    标签: python-3.x tkinter


    【解决方案1】:

    传入回调的事件对象有一个widget 属性,它是对获取事件的小部件的引用。所以,event.widget 就是您要打印的内容。

    【讨论】:

    • 我是否以某种方式使用 ._nametowidget 来获取 Frame 的名称?感谢您的帮助。 event.widget 给了我一个数字。不太清楚如何将其转换为名称。使用 ._nametowidget() 告诉我它缺少参数名称。对不起,我的无知!
    • print('clicked at',event.widget._nametowidget(root), event.x, event.y) 使用这个给我点 x y?
    • 我现在尝试了 w = event.widget print(w.winfo_name()) ,它仍然给出一个数字而不是名称。确实放下 .虽然在数字之前
    • 你希望得到什么名字?变量名?你不能得到它,你也不需要它。你真正想要完成什么?
    • '需要'报告点击了哪个框架以及在哪里 - 只是对我的 GUI 进行了改进。我还提出了另一个与文本框有关的问题,我希望它可以换行和滚动,但可以调整大小。你介意看看那个...吗?tkinter 文本框调整大小而不是包装文本以填充框是“标题”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 2013-04-30
    • 2015-07-03
    • 2019-02-27
    • 2018-11-01
    • 1970-01-01
    相关资源
    最近更新 更多