Форум сайта python.su
Положение “кнопки” на форме определено упаковщиком “place”
Возникла необходимость программно определить координаты кнопки
Вот так не прокатывает из=за отсутствия атрибутов x b y
import Tkinter as tk
def sel(event):
x= event.widget.cget('x') #Ошибка
y= event.widget.cget('y') #Ошибка
print x, y
root = tk.Tk()
bt = tk.Button(root, text = ‘OK’)
bt.place(x = 50, y = 50)
bt.bind(“<Button-1>”,sel)
root.mainloop()
А какие есть ещё варианты?????
Офлайн
def sel(event):
print event.widget.winfo_geometry()
print event.widget.winfo_x()
print event.widget.winfo_y()
Офлайн
Благодарю от всей дущи
Офлайн
Griffondef sel(event):
print event.widget.winfo_geometry()
print event.widget.winfo_x()
print event.widget.winfo_y()
label = Label(frame, width = 40, text='text', name = 'name') ... name_='name' configure(name_) ... def configure(name_) # и как тут быть?
Офлайн
from Tkinter import * from random import randint # def my_event_function(event): name = event.widget._name print event.widget print app.nametowidget(name) print app.children[name] color = '#%02X%02X%02X' % tuple(randint(0, 255) for i in (0,0,0)) #event.widget.config(fg=color) #app.children[name].config(fg=color) app.nametowidget(name).config(fg=color) app.nametowidget('myLabel').config(fg=color) # app = Tk() # Label(app, text='Click on me 1').pack() Label(app, text='Click on me 2', name='myLabel').pack() # app.bind_class('Label', '<Button>', my_event_function) # app.mainloop()
Отредактировано Griffon (Окт. 15, 2012 09:42:29)
Офлайн
Я делаю немного не так. Один раз погорел на именах виджетов при перезагрузке окон и стал использовать фиксированный идентификатор id. Единственное, приходится переводить id в name посредством метода name_path = root.winfo_pathname(id). Предварительно необходимо сохранить соответствие кода id и виджета где-то в отдельном словаре. Используемое имя (для прямого вызова объекта) в этом случае носит характер name_full = root.nametowidget(name_path)
Отредактировано 4kpt (Окт. 23, 2012 21:01:54)
Офлайн