如何使用Python将用户输入从一个脚本传递到另一个脚本?

时间:2019-05-07 18:11:41

标签: python

我正在使用PyQt5创建GUI应用程序,并且在将从第一个脚本中的QLineEdit检索到的用户输入传递到第二个脚本中时遇到了麻烦。 第一个脚本是登录页面,我试图将在行编辑框中输入的用户名传递到主应用程序(这是一个单独的文件),因为它需要在该界面中显示。

我对此进行了研究,只遇到了传递固定变量(例如“ x = 5”(常量))而不传递用户输入的方法。我将如何使用在运行时可能会更改的变量?我已经尝试过

from __main__ import *
调用文件中的

方法,我尝试使用'str(username)'将用户名变量转换为字符串,并将该变量设置为global,但是似乎仍然出现相同的错误,并且在调用第二个文件时并崩溃,没有错误显示。 以下是从脚本的不同区域获取的相关代码:

file1.py

import os

global username
username = self.lineEdit_username.text()
username = str(username)
import file2
MainWindow.close() 
os.system('file2.py') 

file2.py

from __main__ import *
print(username)  # just to check if the variable has been imported

在发布此文章之前,我已经尽力进行了尽可能多的研究,但是如果我错过了其他任何解决方案,请指出正确的方向。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

最简单的方法是利用类并将文件作为模块导入,尤其是使用PyQt时。请参见下面的示例。

Pass_variable.py:

import tkinter as tk
class user_input(object):
    def get_input(self):
        def get_text():
            self.entry = user_entry.get()
            print(self.entry)
            root.destroy()

        root = tk.Tk()

        root.title('Name')

        user_entry = tk.Entry(root)
        user_entry.pack()
        user_entry.focus_set()

        okay_button = tk.Button(root,text='okay',command=get_text)
        okay_button.pack(side='bottom')
        root.mainloop()

retrieve_variable.py:

from Pass_variable import user_input

x = user_input()
x.get_input()
print(x.entry)

因此,您基本上是从文件user_input导入类Pass_variable,将x分配给该类,然后self下的所有内容现在都存储在{ {1}}变量。因此,x与在pass_variable.py文件中调用x.entry相同。

这有意义吗?