【问题标题】:Inconsistency with variables in python across multiple files跨多个文件与python中的变量不一致
【发布时间】:2022-01-21 18:23:24
【问题描述】:

我正在为我正在编写的程序实现登录系统,但遇到了障碍——我似乎无法让变量在所有文件中保留相同的值。我在 python 中工作。

我已经创建了一个名为 config.py 的文件并将变量设置为 false

validated = False

在 main.py 文件中,我调用了 config.py 并编写了一个 if 语句-

import window
import config
...
if config.validated == True:
print(config.validated)

最后在名为 window.py 的文件中,它处理登录系统——我写了一个语句来使验证为真,想法是将 config.py 中的验证更改为真,然后允许脚本运行,上一部分仅设置为打印(经过配置验证)以对其进行测试,因为完整的脚本很难继续处理。

import config
...
if passwordcheck == users[usernamecheck]:
        config.validated == True

程序不会响应,我没有收到任何错误消息。似乎已验证不会在所有文件中更改为 true,有人知道我缺少什么吗?

编辑

 if passwordcheck == users[usernamecheck]:
        config.validated = True
 elif passwordcheck !=users[usernamecheck]:
        tkinter.messagebox.showerror("error", "Password is incorrect")

【问题讨论】:

  • == 运算符是一个比较,而不是一个赋值。你只想要=
  • 另外,最好使用布尔值的身份运算符:if config.validated is True:
  • 修复了这些问题,但仍然没有得到任何响应 - 就像它只是无法识别已验证已更改为 true 或已验证未正确更改为 true?
  • validated = false 这不是有效的 Python 代码。请贴出真实代码。
  • @d_kennetz 这只是一个错字,我很抱歉——我写的实际代码验证 = False。

标签: python tkinter


【解决方案1】:

不能简单地将 config.py 导入脚本以收集实时数据,因为它将创建脚本 config.py 的新实例,而不是访问已经运行的脚本中的任何变量config.py.

要收集实时数据,您可以使用外部文件,例如 JSON 或 TXT 文件,并直接对其进行写入/读取。

例如,您可以创建一个名为“config.txt”的文件,而不是 config.py。 而不是config.validated=True,你可以这样做:

with open("config.txt", "w") as text_file:
    text_file.write('validated True')
    #note that this will overwrite your config.txt, but if your entire use case is just the validated object, it will be fine.

除了直接引用 config.validated 对象,您还可以:

with open('config.txt','r') as config_file:
   validornot = config_file.readlines()[0].split()[1]
   #this will be 'True' or 'False'

编辑:我错了,您可以将 config.py 导入脚本以收集实时数据。但是,您仍然可以使用 .txt 或 .json 文件。

【讨论】:

  • 您不能简单地将 config.py 导入脚本以收集实时数据,因为它将创建脚本 config.py 的新实例 不正确。如果我导入配置,然后分配config.somevariable = 5,则该更改将对同一执行中的其他模块可见。你真的亲自尝试过吗?
  • 显然我错了。我会编辑这篇文章。
猜你喜欢
  • 2013-04-11
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多