下面是我的代码示例。
我正在尝试在 python 中使用 tkinter 制作 GUI。我想要一个应用程序,它有一个变量,比方说var_list
,它作为参数引入到一个函数中。我使用一个按钮运行这个函数command=lambda: analize(var_list)
我希望能够通过按下按钮(将字符串添加到列表的按钮)来修改变量。我也有一个功能:
def button_clicked(e):
if ((e["text"]).lower()) in var_list:
var_list.pop(var_list.index((e["text"]).lower())) #this adds a string to the list
else:
var_list.append((e["text"]).lower()) #this deletes the string from the list if it was already there
该功能有效,我尝试打印,var_list
每次按下按钮时它都会更新。问题是我之前必须创建var_list
一个空列表,当我运行函数时analize(var_list)
,它使用空列表而不是更新的列表。
关于如何在每次从列表中添加/删除某些内容时更新全局变量的任何想法?
from tkinter import *
from PIL import ImageTk
def show_frame(frame):
frame.tkraise()
def button_clicked(e):
if ((e["text"]).lower()) in var_list:
var_list.pop(var_list.index((e["text"]).lower()))
else:
var_list.append((e["text"]).lower())
def analize(x):
#does stuff with the list
window = Tk()
frame1 = Frame(window)
frame2 = Frame(window)
canvas1 = Canvas(frame1,width = 1280, height = 720)
canvas1.pack(expand=YES, fill=BOTH)
image = ImageTk.PhotoImage(file="background.png")
var_list = []
button1 = Button(canvas1, text="Analize",font=("Arial"),justify=CENTER, width=10, command=lambda: [show_frame(frame2),analize(x=var_list)])
button1.place(x=(1280/2)-42, y=400)
button2 = Button(canvas1, text="String1",font=("Arial"),justify=CENTER, width=10, command=lambda: button_clicked(button2))
button2.place(x=(1280/2)-42, y=450)
button3 = Button(canvas1, text="String2",font=("Arial"),justify=CENTER, width=10, command=lambda: button_clicked(button3))
button3.place(x=(1280/2)-42, y=500)
谢谢
您可以创建一个全局变量,例如:-global var
现在您可以在其他定义中访问它以像这样操作变量
global var
var = 0 # if you want to set a default value to the variable before calling the
function
def change_var():
global var
var = 1
使用全局
强烈建议使用 global 并且如果您正在使用包含或需要操作变量的函数,这是非常必要的
如果函数内部没有给出 global ,则该变量将存在于函数内部,并且无法在函数外部访问。
希望这个答案有帮助,顺便说一句,我不确定这是否是您正在寻找的答案,因为您的问题不清楚,也许给出一种您可能认为可能需要更改或更新变量的情况
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句