【问题标题】:Arguments in button command to change global variable value python tkinter按钮命令中的参数更改全局变量值 python tkinter
【发布时间】:2017-11-24 10:53:16
【问题描述】:

我正在尝试获取一组按钮来更改我的全局变量“y”的值。我对 python 很陌生,对 tkinter 也很陌生。我曾尝试使用 lambda,但类似问题的解决方案似乎无法解决问题。

这是我的代码:

import tkinter as tk
from tkinter import *


master=Tk()

def assignint(value):
    global y
    y = value

y= StringVar()

frame = Frame(master)
frame.grid(row=0, columnspan=4)
for i in range(2):
    Grid.rowconfigure(master,i,weight=1)
for i in range(4):
    Grid.columnconfigure(master,i,weight=1)

Button1 = Button(master,text='Fault1',command= lambda: assignint(0))
Button1.grid(row=1, column=0,sticky=N+S+E+W)


Button2 = Button(master,text='Fault2',command= lambda: assignint(1))
Button2.grid(row=1, column=1,sticky=N+S+E+W)


Button3 = Button(master,text='Fault3',command= lambda: assignint(2))
Button3.grid(row=1, column=2,sticky=N+S+E+W)


Button4= Button(master,text='Fault4',command= lambda: assignint(3))
Button4.grid(row=1, column=3,sticky=N+S+E+W)

if y.get()!='':
    print('The value of y is:', y.get())

mainloop()

【问题讨论】:

  • 打印语句的条件在条​​件有机会为真之前运行。
  • 刚试过去掉if语句,问题依旧,y的值还是空白
  • y 为空白,因为 print 在您有机会更改其值之前运行。就像它在你的 GUI 显示之前运行一样。

标签: python button tkinter global-variables


【解决方案1】:

更改StringVar 的值时需要使用set 方法。

如替换:

y = value

与:

y.set(value)

【讨论】:

  • 这没有什么区别仍然没有让打印语句工作。
  • @Jkind9 尝试将它放在另一个按钮中以便以后调用。在当前状态下,它只运行一次,即条件为 False。
  • @Jkind9 没问题。我还要看看 tkinter frequent questions
猜你喜欢
  • 2022-11-24
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 2013-10-28
  • 2018-07-22
  • 1970-01-01
  • 2023-02-24
相关资源
最近更新 更多