如何在pythontkinter中将按钮的尺寸设置为变量?

2024-10-01 22:29:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做一个程序,在那里我可以用一个变量改变按钮的宽度,但它不会更新。我知道如何对文本做同样的处理,但我不能处理它的尺寸。另外,我不能将尺寸保留为默认值,因为我有多个按钮,所有按钮都需要具有相同的尺寸,但文本不同

我尝试的第一件事是更改widthvariable的width命令,因为这适用于text-to-textvariable,但它根本不存在。 我还尝试设置width=var,但没有

from tkinter import *

root=Tk()

myFrame=Frame()

myFrame.pack(fill="both", expand="True")

idioma=StringVar(myFrame)
idioma.set("Català")
idiomes_possibles=["Català", "Español", "English", "Deutsch"]
idiomes_possibles=OptionMenu(myFrame, idioma, *idiomes_possibles)
idiomes_possibles.config(width=10)
idiomes_possibles.grid(row=1, column=0)

vari=IntVar()
vari.set(15)
varia=vari.get()
def change_dropdown(*args):
    idioma_elegit=idioma.get()
    if(idioma_elegit=="Català"):
        vari.set(15)
        varia=vari.get()
    elif(idioma_elegit=="Español"):
        vari.set(17)
        varia=vari.get()
botó_recta=Button(myFrame, width=varia)
botó_recta.grid(row=0, column=1)
root.mainloop()

我希望更改idioma变量会更改varia变量,按钮也会调整大小,除了调整按钮的大小之外,其他都会这样做。 谢谢


Tags: 文本get尺寸rootwidth按钮setmyframe
1条回答
网友
1楼 · 发布于 2024-10-01 22:29:44

如前所述,您需要实际更改函数change_dropdown中按钮的宽度。但是您还没有将函数作为回调函数分配给OptionMenu,因此在更改选择之后实际上什么也不会发生。这样的方法应该有用:

from tkinter import *

root=Tk()
myFrame=Frame()
myFrame.pack(fill="both", expand="True")

idioma=StringVar(myFrame)
idioma.set("Català")
idiomes_possibles=["Català", "Español", "English", "Deutsch"]
idiomes_possibles=OptionMenu(myFrame, idioma, *idiomes_possibles, command=change_dropdown)
idiomes_possibles.config(width=10)
idiomes_possibles.grid(row=1, column=0)

vari=IntVar()
vari.set(15)
varia=vari.get()
botó_recta=Button(myFrame, width=varia)
def change_dropdown(*args):
    idioma_elegit=idioma.get()
    if(idioma_elegit=="Català"):
        vari.set(15)
        varia=vari.get()
    elif(idioma_elegit=="Español"):
        vari.set(30)
        varia=vari.get()    
    botó_recta['width'] = varia


botó_recta.grid(row=0, column=1)
root.mainloop()

相关问题 更多 >

    热门问题