python - 如何使用字符串作为变量?
问题描述
我正在尝试创建一个函数,该函数将根据小部件的状态和小部件本身更改 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
解决方案
我只是没有根据文本的实际值而不是我使用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()
推荐阅读
- r - 使用 ggplot2 和 ggrepel 突出显示散点图中的单个点
- python - 如何在 Tensorflow Data API 中正确使用 dataset.map
- recursion - 为什么这个 Scilab 递归查找行列式的程序不起作用?
- marklogic - 产生多个线程以删除多个相同元素时出错
- java - 使用 Volley 发布数据的最简单方法是什么?
- excel - RSQ 函数公式中的多个范围
- android - Android 特定部分中的 Kotlin/Native 访问设备传感器
- javascript - 在 v-for 循环中仅检索一个元素的索引
- python - 从 bytearray python 中取一个字节
- c - flex 无法识别字符范围