python - 使用 Python 函数更改全局变量
问题描述
我正在尝试用我的函数修改一个全局变量,称为“提交”。该函数应该更改变量“start_stop_key”和“delay”。我使用“tkinter”作为“tk”和 pynput 库。我的代码如下:
# four variables are created to
# control the auto-clicker
# delay (in seconds)
delay = 0.001
# Button.right, Button.left, Button.middle for their respective mouse buttons
button = Button.right
start_stop_key = KeyCode(char=']')
stop_key = KeyCode(char='[')
def submit():
delay = delay_entry.get()
start_stop_key = start_stop_key_entry.get()
root = tk.Tk()
root.title("Buggie Autoclicker")
canvas = tk.Canvas(root, height=600, width=470)
canvas.pack()
delay_label = tk.Label(root, text="Time between clicks(in seconds):", font=("Arial", 14))
delay_label.pack(pady=20)
delay_entry = tk.Entry(root)
delay_entry.pack(pady=10)
start_stop_key_label = tk.Label(root, text="Key to toggle the autoclicker on and off:", font=("Arial", 14))
start_stop_key_label.pack(pady=20)
start_stop_key_entry = tk.Entry(root)
start_stop_key_entry.pack(pady=10)
submitbutton = tk.Button(root, text="Submit Values", command=submit())
submitbutton.pack(pady=20)
root.mainloop()
解决方案
使用 global 关键字来修改全局变量。
在你的情况下:
def submit():
global delay
global start_stop_key
delay = delay_entry.get()
start_stop_key = start_stop_key_entry.get()
推荐阅读
- javascript - 计算两个变量字符串之间的字数
- python - 当访问一个方法中更新的类变量时,它的更新值不会在scrapy spider的另一个方法中被拾取
- excel - 如何使用 VBA 将 Outlook 邮件中的“收件人:”字段与预定义的邮件 ID 进行比较?
- r - 如何根据主数据框中的选定特征生成动态汇总表
- swift - 使用 MVVM 架构快速更新数据
- visual-studio - 系统重新启动后,模拟器选项未在 VS 2019 中显示
- azure - Azure AD 应用程序权限:是否可以获得“授予租户的其他权限”下的权限?
- datatables - 数据表:如何使用未知列序数获取列的总和
- python - Visual Studio Code 可以在运行或调试 Python 的过程中启动 xinit 吗?
- python - spacy-为什么 nlp() 适用于单个字符串,而 nlp.pipe() 适用于字符串列表?