Если вы хотите использовать test_list
, переменную, созданную методом other_window
, из экземпляра test
, у вас есть пара опций.
Предполагается, что вы определили экземпляр из test
где-нибудь глобально, вы можете вызвать need_list()
и указать test_list
в качестве аргумента. Например:
class test(QtWidgets.QMainWindow):
def __init__(self, parent=None):
self.test.setupUi(self) # QT
#do something
self.pushbutton.clicked.connect(self.connect1)
def connect1(self):
window = other_window(self)
otherview.show()
def need_list(self, test_list):
print(test_list)
class other_window(QtWidgets.QMainWindow)
def __init__(self, parent=None):
self.other_window.setupUi(self) # QT
#do something
self.pushbutton.clicked.connect(self.connect2)
def connect2(self):
# do something
self.pushbutton.clicked.connect(self.return_list)
def return_list(self):
test_list = []
test_list.append("a", "b", "c")
return test_list
test_instance = test() # Or however you defined these
other_window_instance = other_window()
test_instance.need_list(other_window_instance.return_list())
Вы также можете сделать test_list
глобальным. Это потребует меньших изменений за счет некоторой гибкости:
class test(QtWidgets.QMainWindow):
def __init__(self, parent=None):
self.test.setupUi(self) # QT
#do something
self.pushbutton.clicked.connect(self.connect1)
def connect1(self):
window = other_window(self)
otherview.show()
def need_list(self):
print(test_list)
class other_window(QtWidgets.QMainWindow)
def __init__(self, parent=None):
self.other_window.setupUi(self) # QT
#do something
self.pushbutton.clicked.connect(self.connect2)
def connect2(self):
# do something
self.pushbutton.clicked.connect(self.return_list)
def return_list(self):
global test_list
test_list = []
test_list.append("a", "b", "c")
test_instance = test()
other_window_instance = other_window()
Python имеет переменные области (см. документацию Python по выполнению ), что означает, что в вашей исходной программе , need_list()
не может увидеть test_list
, потому что он определен локально. Все, что находится за пределами этой функции, не может видеть test_list
, если вы не объявите ее глобальной переменной (с ключевым словом global
, используемым во втором параметре, что позволяет видеть его где угодно, кроме тел функций, переназначающих одно и то же имя См. этот вопрос для получения дополнительной информации) или явным образом передайте его функции (используя аргумент функции в need_list()
, как показано в первом варианте).
Надеюсь, это помогло!