【问题标题】:How can I get an Tkinter input from one file to another?如何从一个文件获取 Tkinter 输入到另一个文件?
【发布时间】:2021-01-02 22:59:49
【问题描述】:

我正在为我的学校项目开发一个基本的酒店管理系统。我已经为一个按钮制作了这个提交功能来登录到经理。我需要从这个 python 文件 log_in.py 获取这个局部变量 username 到另一个 python 文件 dashboard.py .我该怎么做?

def submit():
    username = str(username_entry.get()).strip()
    password = str(password_entry.get()).strip()
    username_exists = username in data.username.values

    employee_id = pd.read_sql_query(f"SELECT employee_id FROM managers WHERE username = '{username}';", db)
    employee_id = employee_id.employee_id.values[0]
        
    if username_exists: 
        correct_password = pd.read_sql_query(f"SELECT password FROM managers WHERE username = '{username}';", db)
        correct_password = correct_password.password.values[0]
        password_matches = (password == correct_password)
    
    if not username_exists: messagebox.showerror('Invalid Username', 'The entered username does not exist.')
    elif not password_matches: messagebox.showerror('Invlaid Password', 'The entered password is wrong.')
    else: 
        messagebox.showinfo('Log In Successful', 'You are now logged in.')
        root.destroy()
        os.system('python dashboard.py')

【问题讨论】:

  • 您可以将username 作为命令行参数传递给dashboard.pyos.system(f"python dashboard.py {username}")。当然,您需要修改dashboard.py 以使用sys.argv 读取username。然而更好的解决方案是将dashboard.py的主块放在一个期望username作为参数的函数中,然后导入dashboard并运行这个函数而不是使用os.system()
  • 为什么要用os.system()启动一个单独的Python进程?

标签: python tkinter local-variables


【解决方案1】:

据我所知,您首先必须通过在声明 username 变量之前放置 global username 来使 username 变量成为全局变量:

def submit():
    global username
    username = str(username_entry.get()).strip()
    password = str(password_entry.get()).strip()

之后,您可以通过以下方式将 log_in.py 文件中的 username 变量导入 dashboard.py 文件: p>

from log_in import username

dashboard.py 的顶部。

注意:确保两个文件(log_in.py 和dashboard.py)在同一个文件夹中。

现在,您应该可以访问 username 变量了;)

*log_in.py

def submit():
    global username
    username = str(username_entry.get()).strip()
    password = str(password_entry.get()).strip()

    #The rest of your code

*dashboard.py 的顶部

from log_in import username

#The rest of your code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2012-12-01
    • 1970-01-01
    • 2011-11-28
    相关资源
    最近更新 更多