【问题标题】:How to set the dimensions of a button equal to a variable in Python tkinter?如何将按钮的尺寸设置为等于 Python tkinter 中的变量?
【发布时间】:2019-08-26 15:47:05
【问题描述】:

我尝试编写一个程序,可以在其中使用变量更改按钮的宽度,但它不会更新。我已经知道如何处理它的文本,但我不能处理它的尺寸。我也不能将尺寸保留为默认值,因为我有多个按钮,所有按钮都需要具有相同的尺寸,但文本不同。

我尝试的第一件事是更改宽度变量的宽度命令,因为这适用于文本到文本变量,但它不存在。 我也尝试设置 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 变量以及按钮调整大小,除了调整按钮大小之外。 谢谢。

【问题讨论】:

  • 您设置按钮的宽度一次,使用来自变量varia 的值。对该变量的进一步更改对按钮绝对没有影响。您必须再次设置宽度,可以写成botó_recta['width'] = variabotó_recta.config(width=varia)

标签: python python-3.x


【解决方案1】:

如前所述,您需要在函数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()

【讨论】:

    猜你喜欢
    • 2014-11-05
    • 2019-07-08
    • 1970-01-01
    • 2021-06-28
    • 2020-07-31
    • 2014-10-30
    • 2017-01-25
    • 1970-01-01
    • 2023-01-08
    相关资源
    最近更新 更多