Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: SlayerBur en 16 Abril 2022, 03:41 am



Título: Cambiar texto de Label sin que se superponga (Tkinter)
Publicado por: SlayerBur en 16 Abril 2022, 03:41 am
Buen dia.

Estoy intentando hacer un mini proyecto en Python, pero tengo un problema al momonte de modificar un label, en teoria, al momento de pulsar en un RadioButton, deberia aparecer un label con el texto, pero, al momento de pulsar entre los RadioButton, el texto del label queda como superpuesto, estoy utilizando StringVar, y tambien intente con Label.config, pero me salia un error como que faltara un self, las cuales son las soluciones que enconte en internet, pero no me funcionan  :-(

Código:
    def interface(self):
        Radiobutton(text="Label",variable=self.optionSelected,value="Label", command=self.radioSelect).place(x=50,y=80)
        Radiobutton(text="Boton",variable=self.optionSelected,command=self.radioSelect, value="Button").place(x=110,y=80)
        Radiobutton(text="Cuadro de texto",variable=self.optionSelected,command=self.radioSelect, value="Entry").place(x=170,y=80)
        Radiobutton(text="Lista",variable=self.optionSelected,command=self.radioSelect, value="Listbox").place(x=50,y=110)
        Radiobutton(text="Texto",variable=self.optionSelected,command=self.radioSelect, value="Text").place(x=110,y=110)
        Radiobutton(text="Menu",variable=self.optionSelected,command=self.radioSelect, value="Menu").place(x=170,y=110)

(El radioSelect, lo unico que hace actualmente es llamar a esta funcion)
Código:
    def updateText(self):
        Label(text=self.optionSelected.get()).place(x=110,y=130)

y en el __init__ tengo la variable         self.optionSelected = StringVar()
(Intente colocar un set al StringVar, pero tampoco aporta nada)

Gracias de antemano  :D


Título: Re: Cambiar texto de Label sin que se superponga (Tkinter)
Publicado por: Yidu en 16 Abril 2022, 21:27 pm
Hola,

No me gusta mucho usar la POO con tkinter. Pero bueno, eso no viene al caso.

Creo que estas usando mal StringVar(). Eso sin contar, que en Label, si usas variables debes poner textvariable=  y no text=

Si llamas a una función con el command de un widget, has de usar miVariable.set(valor)

Código
  1. miVariable = StringVar()
  2. miLabel = Label(ventana, textvariable = miVariable)

Y si llamas a una función que use dicha variable:
Código
  1. def miFuncion():
  2.    miVariable.set('Hola')

Entonces aparecerá "Hola" en dicho Label.

Bueno, te lo he explicado un poco resumido. Pero en YouTube hay canales donde explican tkinter bastante bien. Saludos!