我正在使用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
在发布此文章之前,我已经尽力进行了尽可能多的研究,但是如果我错过了其他任何解决方案,请指出正确的方向。
感谢您的帮助
答案 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
相同。
这有意义吗?