首页 > 解决方案 > 如何使用字符串作为变量?

问题描述

我正在尝试创建一个函数,该函数将根据小部件的状态和小部件本身更改 Tkinter 小部件的文本。在这个函数中,我还需要更改我们作为变量接收的状态的值,以便稍后更改它,因此它不仅适用于一种情况。这是我到目前为止所拥有的,但它不起作用,因为当我将变量全球化时,它说它是参数并且是全局变量。我知道这是非常基本的东西,我知道这不起作用,但我想知道是否有办法解决这个问题,谢谢!

from tkinter import*
from definitions import*

root = Tk()
root.title("Chemistry Tool")
root.iconbitmap('favicon.ico')

#### MODLE (Data,Methods) ####
state_1 = 0


def drop_down(state, state_var, button):
    global setattr(state_var)
    if state == 0:
        button.config(text="↓")
        state_var = 1
    else:
        button.config(text="→")
        state_var = 0



#### Controlers (Widgets that change data) ####
drop1 = Button(root, text="→", bg="WHITE", command= lambda: drop_down(state_1, "state_1", drop1))
drop1.grid(row=0, column=0, sticky=N)

#### VIEW (Widgets that display outputs) ####
display = Text(root, bg="WHITE")
display.grid(row=0, column=2, columnspan=2, rowspan=2, sticky=SE)

root.mainloop()

输出:

  File "D:/Devlopment/Python/AP-Computer-Science-Project-1/main.py", line 13
    global setattr(state_var)
                  ^
SyntaxError: invalid syntax

标签: pythontkinter

解决方案


我只是没有根据文本的实际值而不是我使用state上面调用的变量的系统进行更改。

from tkinter import*
from definitions import*

root = Tk()
root.title("Chemistry Tool")
root.iconbitmap('favicon.ico')

#### MODLE (Data,Methods) ####


def drop_down(button):
    if button['text'] == "→":
        button.config(text="↓")
    elif button['text'] == "↓":
        button.config(text="→")
        state_var = 0
    print(button['text'])



#### Controlers (Widgets that change data) ####
drop1 = Button(root, text="→", bg="WHITE", width=2, command= lambda: drop_down(drop1))
drop1.grid(row=0, column=0, sticky=N)

#### VIEW (Widgets that display outputs) ####
display = Text(root, bg="WHITE")
display.grid(row=0, column=2, columnspan=2, rowspan=2, sticky=SE)

root.mainloop()

推荐阅读