【问题标题】:get() on OptionMenu -> tkinter Python 3OptionMenu 上的 get() -> tkinter Python 3
【发布时间】:2022-01-21 18:53:09
【问题描述】:

如何在单击按钮时获取“get()”来获取值? 打印的值始终保持我默认设置的值...

    langues = ['FR', 'EN']
    nb_joueurs = [2, 3, 4]

    var_langues = StringVar()
    var_nb_joueurs = IntVar()
    var_langues.set(langues[0])
    var_nb_joueurs.set(nb_joueurs[0])


    Label(self.frame_droit, text='Choix de la langue:').pack()
    OptionMenu(self.frame_droit, var_langues, *langues).pack(expand=True)
    Label(self.frame_droit, text='Nombre de joueurs:').pack()
    OptionMenu(self.frame_droit, var_nb_joueurs, *nb_joueurs).pack(expand=True)
    Button(self.frame_droit, text="NOUVELLE PARTIE", bg='#1394ab', fg='white', height=2,
                             width=20, ***command=lambda:print(f'{choix_langue} and {choix_nb_joueurs}')).pack()
    choix_nb_joueurs=var_nb_joueurs.get()
    choix_langue=var_langues.get()***

【问题讨论】:

    标签: python tkinter get optionmenu


    【解决方案1】:

    让按钮调用一个函数。假设您的小部件是全局变量,您可以像在其他任何时候一样调用 get。

    def do_something():
        choix_langue = var_langues.get()
        choix_nb_joueurs = var_nb.joueurs.get()
        print(f'{choix_langue} and {choix_nb_joueurs}')
    
    Button(self.frame_droit, ..., command=do_something)
    

    对于定义良好的程序,lambda 的使用通常会使代码比它需要的更复杂。函数更易读、易写、更易调试。

    【讨论】:

    • 实际上问题是我调用了无用的变量,而不是直接在按钮中使用“get”。变量是在点击之前设置的。但是感谢您的建议!
    猜你喜欢
    • 2017-02-05
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 2017-06-15
    相关资源
    最近更新 更多