причина: переменная new_window умирает сразу как заканчивается функция new_form() (почему? во славу Сатаны конечно!)
Пути решения:
1) создать какую нибудь глобальную переменную. Но глобальные переменные это плохой тон (незнаю почему) :
new_window = None
def new_form():
global new_window
new_window = uic.loadUi("interface2.ui")
new_window.setWindowTitle("New form")
new_window.show()
2) создать переменную глобальный массив окон (так делаю я - это всё ещё "плохой тон" но зато потом можно циклом разом удалить все создаваемые окна например...) :
мой_список_окон = []
def new_form():
global мой_список_окон
new_window = uic.loadUi("interface2.ui")
new_window.setWindowTitle("New form")
new_window.show()
мой_список_окон.append(new_window)
3) назначить new_window дочерю main_window (идиологически правильный вариант):
def new_form(parent):
new_window = uic.loadUi("interface2.ui")
new_window.setWindowTitle("New form")
new_window.show()
new_window.setParent(parent)
import test2
main_window.pushButton.clicked.connect(lambda: test2.new_form(main_window))
4) new_window должна быть переменной того обьекта который гарантировано не будет удалён (незнаю насчёт идиалогии... все варианты правильные. ):
def new_form(parent):
parent.new_window = uic.loadUi("interface2.ui")
parent.new_window.setWindowTitle("New form")
parent.new_window.show()
import test2
main_window.pushButton.clicked.connect(lambda: test2.new_form(main_window))