Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Алма-Атинец от Август 22, 2021, 20:17



Название: Qt Designer и Python: связь двух окон
Отправлено: Алма-Атинец от Август 22, 2021, 20:17
Доброго времени суток всем форумчанам!

ОЧЕНЬ НУЖНА ПОМОШЬ!!!!!!!!!!

Я начинающий программист. Изучаю Питон. С помощью Qt Designer я создал два окна. Первое окно содержит кнопку «Переход ко 2 окну», при нажатии на которую должно открываться второе окно. Но опыта мне не хватает и поэтому пока всё, что я смог сделать – это то, что при нажатии на кнопку в консоли выводится сообщение «Была нажата кнопка Переход ко 2 окну».

Подскажите мне, что надо делать чтобы при нажатии на кнопку «Переход ко 2 окну» открывалось второе окно?

Исходный код и картинки прилагаю.

Заранее благодарю всех!!!


Код
Python
 
from PyQt5 import QtCore, QtGui, QtWidgets
 
class Ui_MainWindow(object):
   def setupUi(self, MainWindow):
       MainWindow.setObjectName("MainWindow")
       MainWindow.resize(342, 151)
       self.centralwidget = QtWidgets.QWidget(MainWindow)
       self.centralwidget.setObjectName("centralwidget")
       self.label = QtWidgets.QLabel(self.centralwidget)
       self.label.setGeometry(QtCore.QRect(110, 20, 171, 51))
       font = QtGui.QFont()
       font.setPointSize(20)
       self.label.setFont(font)
       self.label.setObjectName("label")
       self.pushButton = QtWidgets.QPushButton(self.centralwidget)
       self.pushButton.setGeometry(QtCore.QRect(80, 70, 231, 41))
       font = QtGui.QFont()
       font.setPointSize(16)
       self.pushButton.setFont(font)
       self.pushButton.setObjectName("pushButton")
       MainWindow.setCentralWidget(self.centralwidget)
       self.menubar = QtWidgets.QMenuBar(MainWindow)
       self.menubar.setGeometry(QtCore.QRect(0, 0, 342, 21))
       self.menubar.setObjectName("menubar")
       self.menu = QtWidgets.QMenu(self.menubar)
       self.menu.setObjectName("menu")
       MainWindow.setMenuBar(self.menubar)
       self.action = QtWidgets.QAction(MainWindow)
       self.action.setObjectName("action")
       self.menu.addAction(self.action)
       self.menubar.addAction(self.menu.menuAction())
 
       self.retranslateUi(MainWindow)
       QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
   def retranslateUi(self, MainWindow):
       _translate = QtCore.QCoreApplication.translate
       MainWindow.setWindowTitle(_translate("MainWindow", "Первое окно"))
       self.label.setText(_translate("MainWindow", "Первое окно"))
       self.pushButton.setText(_translate("MainWindow", "Переход ко 2 окну"))
       self.menu.setTitle(_translate("MainWindow", "Текст"))
       self.action.setText(_translate("MainWindow", "Изменить"))
 
def my_test_on_click():
   print("Была нажата кнопка Переход ко 2 окну")
 
if __name__ == "__main__":
   import sys
   app = QtWidgets.QApplication(sys.argv)
   MainWindow = QtWidgets.QMainWindow()
   ui = Ui_MainWindow()
   ui.setupUi(MainWindow)
   MainWindow.show()
   ui.pushButton.clicked.connect(my_test_on_click)
   sys.exit(app.exec_())
 
 



Код
Python
 
 
from PyQt5 import QtCore, QtGui, QtWidgets
 
class Ui_MainWindow(object):
   def setupUi(self, MainWindow):
       MainWindow.setObjectName("MainWindow")
       MainWindow.resize(338, 154)
       self.centralwidget = QtWidgets.QWidget(MainWindow)
       self.centralwidget.setObjectName("centralwidget")
       self.label = QtWidgets.QLabel(self.centralwidget)
       self.label.setGeometry(QtCore.QRect(100, 30, 171, 41))
       font = QtGui.QFont()
       font.setPointSize(20)
       self.label.setFont(font)
       self.label.setObjectName("label")
       self.pushButton = QtWidgets.QPushButton(self.centralwidget)
       self.pushButton.setGeometry(QtCore.QRect(50, 90, 271, 41))
       font = QtGui.QFont()
       font.setPointSize(16)
       self.pushButton.setFont(font)
       self.pushButton.setObjectName("pushButton")
       MainWindow.setCentralWidget(self.centralwidget)
 
       self.retranslateUi(MainWindow)
       QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
   def retranslateUi(self, MainWindow):
       _translate = QtCore.QCoreApplication.translate
       MainWindow.setWindowTitle(_translate("MainWindow", "Второе окно"))
       self.label.setText(_translate("MainWindow", "Второе окно"))
       self.pushButton.setText(_translate("MainWindow", "Венуться в первое окно"))
 
 
if __name__ == "__main__":
   import sys
   app = QtWidgets.QApplication(sys.argv)
   MainWindow = QtWidgets.QMainWindow()
   ui = Ui_MainWindow()
   ui.setupUi(MainWindow)
   MainWindow.show()
   sys.exit(app.exec_())
 
 
 


Название: Re: Qt Designer и Python: связь двух окон
Отправлено: kambala от Август 22, 2021, 21:53
Код
Python
   MainWindow = QtWidgets.QMainWindow()
   ui = Ui_MainWindow()
   ui.setupUi(MainWindow)
   MainWindow.show()
этот твой код создает и показывает окно, тебе надо написать аналогичное (для начала можешь даже просто скопипастить)


Название: Re: Qt Designer и Python: связь двух окон
Отправлено: Алма-Атинец от Август 23, 2021, 11:32
Код
Python
   MainWindow = QtWidgets.QMainWindow()
   ui = Ui_MainWindow()
   ui.setupUi(MainWindow)
   MainWindow.show()
этот твой код создает и показывает окно, тебе надо написать аналогичное (для начала можешь даже просто скопипастить)


Спасибо!
Но теперь следующая проблема. Второе окно появляется, но сразу же исчезает. Как мне сделать, чтобы второе окно НЕ ИСЧЕЗАЛО, а становилось АКТИВНЫМ?
Заранее благодарю!!!


Название: Re: Qt Designer и Python: связь двух окон
Отправлено: Алма-Атинец от Август 23, 2021, 11:59
Код
Python
   MainWindow = QtWidgets.QMainWindow()
   ui = Ui_MainWindow()
   ui.setupUi(MainWindow)
   MainWindow.show()
этот твой код создает и показывает окно, тебе надо написать аналогичное (для начала можешь даже просто скопипастить)


Уппсс!!!
При копипасте, при нажатии на кнопку вызывается НЕ ВТОРОЕ, а ПЕРВОЕ окно.
И оно резко исчезает.
Не получилось.
Может быть чего-то не хватает?


Название: Re: Qt Designer и Python: связь двух окон
Отправлено: Алма-Атинец от Август 23, 2021, 12:16
Код
Python
   MainWindow = QtWidgets.QMainWindow()
   ui = Ui_MainWindow()
   ui.setupUi(MainWindow)
   MainWindow.show()
этот твой код создает и показывает окно, тебе надо написать аналогичное (для начала можешь даже просто скопипастить)


Уппсс!!!
При копипасте, при нажатии на кнопку вызывается НЕ ВТОРОЕ, а ПЕРВОЕ окно.
И оно резко исчезает.
Не получилось.
Может быть чего-то не хватает?

Исправил. При нажатии на кнопку, появляется второе окно.
Но осталась проблема с тем, что оно ИСЧЕЗАЕТ!
Чего не хватает?

Или подскажите видео или сайт, который показывает как это сделать ПОШАГОВО.
Заранее благодарю!