Eae.
Gostaria de sabe um jeito de eu colocar a localização de um widget em place em uma variável, no caso o x e o y em variáveis diferentes. Tem como?
E ai @deyvidd, espero que esteja tudo excelente por ai!
Vamos ver se entendi o proposto, você está criando um widget no Tkinter e está posicionando ele utilizando o place()
.
Você quer pegar a posição ou as informações deste widget e atribuir a alguma variável.
Se for isso eu cheguei ao seguinte código:
# -*- coding: utf-8 -*-
"""."""
import tkinter as tk
class MainWindow(tk.Tk):
# Variáveis auxiliares que irão receber a posição atual do botão.
x = int()
y = int()
def __init__(self):
super().__init__()
self.title(string='Janela principal')
# icon_png = tk.PhotoImage(file='icons/icon.png')
# self.iconphoto(False, icon_png)
width = round(number=self.winfo_screenwidth() / 2)
height = round(number=self.winfo_screenheight() / 2)
self.geometry(newGeometry=f'{width}x{height}')
self.minsize(width=width, height=height)
self.create_widgets()
def create_widgets(self):
# Botão que dispara uma ação.
button = tk.Button(
master=self,
text='Clique aqui',
command=self._on_button_clicled,
)
button.place(x=100, y=30)
# Botão que irá se mover.
self.button1 = tk.Button(
master=self,
text=f'X = {str(self.x)} e Y = {self.y}',
)
self.button1.place(x=self.x, y=self.y)
def _on_button_clicled(self):
# Informções do botão que irá se mexer.
widget_info = self.button1.place_info()
print(f'Variável widget_info: {widget_info}')
# Atribuindo o valor as variáveis x e y.
self.x = int(widget_info['x']) + 10
self.y = int(widget_info['y']) + 10
# Valor atual das variáveis.
print(f'Valor de X = {self.x}\nValor de Y = {self.y}')
# Alterando o texto do botão.
self.button1.config(text=f'X = {self.x} e Y = {self.y}')
# Alterando a posição do botão.
self.button1.place_configure(
x=self.x,
y=self.y,
)
if __name__ == '__main__':
app = MainWindow()
app.mainloop()
Se não for isso, depois posta mais detalhes para chegarmos em um exemplo legal.
Acabei fazendo o widget se mover para poder exemplificar a mudança no valor da varável.
Eae.
Di uma olhada no seu exemplo e consegui adaptar. no caso é que eu acho meio difícil ver a documentação e não havia achado muita coisa sobre o mesmo, mas eu estava a fazer um teste pra “projetos” e cheguei nessa duvida mas o código final ficou assim:
from tkinter import *
window = Tk()
#variables
x = int()
y = int()
#movements
def up(event):
widget_info = cube.place_info()
y = int(widget_info['y']) - 10
cube.place_configure(y=y)
def down(event):
widget_info = cube.place_info()
y = int(widget_info['y']) + 10
cube.place_configure(y=y)
def left(event):
widget_info = cube.place_info()
x = int(widget_info['x']) - 10
cube.config(text=f'X = {x}')
cube.place_configure(x=x)
def right(event):
widget_info = cube.place_info()
x = int(widget_info['x']) + 10
cube.place_configure(x=x)
#widget
cube = Button(height=1, width=1, bg='white')
cube.place(x=50, y=50)
#keyboard
window.bind('<Up>', func=up)
window.bind('<Down>', func=down)
window.bind('<Left>', func=left)
window.bind('<Right>', func=right)
#window settings
window.title('teste')
window.geometry('700x500+50+50')
window.mainloop()
Provavelmente o codigo não esta bem feito mas isso e coisa que eu ainda estou a aprender :v
Está bem feito sim!
Estamos sempre e sempre aprendendo