Найти - Пользователи
Полная версия: Tkinter как определить координаты виджета??
Начало » GUI » Tkinter как определить координаты виджета??
1
typ1972
Положение “кнопки” на форме определено упаковщиком “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()

А какие есть ещё варианты?????
Griffon
 def sel(event):
print event.widget.winfo_geometry()
print event.widget.winfo_x()
print event.widget.winfo_y()
typ1972
Благодарю от всей дущи
clinicalfilm
Griffon
 def sel(event):
print event.widget.winfo_geometry()
print event.widget.winfo_x()
print event.widget.winfo_y()

спасибо тоже огромное, если можно вопросик в догонку, я могу получить и имя winfo_name() , теперь сам вопрос: если я хочу обратиться к виджету, зная его имя, вроди бы как надо использовать nametowidget(name), но я никак не могу его приделать, чтобы работало….

label = Label(frame, width = 40, text='text', name = 'name')
...
name_='name'
configure(name_)
...
def configure(name_)
        # и как тут быть?
Griffon
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()

Спасибо за вопрос. Пишу приложение, появилась пара идей.
4kpt
Я делаю немного не так. Один раз погорел на именах виджетов при перезагрузке окон и стал использовать фиксированный идентификатор id. Единственное, приходится переводить id в name посредством метода name_path = root.winfo_pathname(id). Предварительно необходимо сохранить соответствие кода id и виджета где-то в отдельном словаре. Используемое имя (для прямого вызова объекта) в этом случае носит характер name_full = root.nametowidget(name_path)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB