Оc Windows 10 , Python 3.7.5
Всем привет, я полный ноль в программировании и только изучаю язык Python. И изучать я решил сразу с практики, так как чтение книг для меня нудное задача. Решил для начала создать простое приложение в котором на главном окне есть кнопка и при нажатии на нее открывалась бы второе окно, а первое закрылось. В QtDesinger создал два окна и импортировал их в py файл. Далее создал файл test.py и импортировал туда классы из двух окон и по примерам с инета пробовал сделать действие при котором нажатие на кнопку открывал бы второе окно. Но выдает ошибку AttributeError: 'Ui_MainWindow' object has no attribute 'close'.
Код из test.py
Код из 1го окна сделанного в QtDesinger
Код из 2го окна
Ошибка при запуске программы
appdirs 1.4.4
certifi 2020.6.20
chardet 3.0.4
click 7.1.2
distlib 0.3.1
docutils 0.16
filelock 3.0.12
idna 2.10
importlib-metadata 2.0.0
Kivy 1.11.1
kivy-deps.glew 0.1.12
kivy-deps.sdl2 0.1.23
Kivy-Garden 0.1.4
pip 20.2.3
Pygments 2.7.1
pypiwin32 223
PyQt5 5.15.1
PyQt5-sip 12.8.1
PyQt5-stubs 5.14.2.2
pyqt5-tools 5.15.1.1.7.5
python-dotenv 0.14.0
pywin32 228
requests 2.24.0
setuptools 50.3.0
six 1.15.0
urllib3 1.25.10
virtualenv 20.0.32
wheel 0.35.1
zipp 3.3.0
certifi 2020.6.20
chardet 3.0.4
click 7.1.2
distlib 0.3.1
docutils 0.16
filelock 3.0.12
idna 2.10
importlib-metadata 2.0.0
Kivy 1.11.1
kivy-deps.glew 0.1.12
kivy-deps.sdl2 0.1.23
Kivy-Garden 0.1.4
pip 20.2.3
Pygments 2.7.1
pypiwin32 223
PyQt5 5.15.1
PyQt5-sip 12.8.1
PyQt5-stubs 5.14.2.2
pyqt5-tools 5.15.1.1.7.5
python-dotenv 0.14.0
pywin32 228
requests 2.24.0
setuptools 50.3.0
six 1.15.0
urllib3 1.25.10
virtualenv 20.0.32
wheel 0.35.1
zipp 3.3.0
Код из test.py
Python:
from PyQt5 import QtWidgets, QtGui,QtCore
from calk import Ui_MainWindow
from calk2 import Ui_Form
import sys
class mywindow(QtWidgets.QMainWindow):
def __init__(self):
super(mywindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
def show_mywindow(self):
self.ui.pushButton.clicked.connect(self.show_mywindow2)
self.ui.pushButton.clicked.connect(self.ui.close)
self.ui.show()
def show_mywindow2(self):
self.ui2 = mywindow2()
self.ui2.show()
class mywindow2(QtWidgets.QMainWindow):
def __init__(self):
super(mywindow2, self).__init__()
self.ui2 = Ui_Form()
self.ui2.setupUi(self)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = mywindow()
w.show()
w.show_mywindow()
sys.exit(app.exec_())
Python:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(326, 342)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(120, 0, 47, 13))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(10, 30, 47, 13))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(10, 60, 47, 13))
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(10, 90, 47, 13))
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(10, 120, 47, 13))
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(10, 150, 47, 13))
self.label_6.setObjectName("label_6")
self.label_7 = QtWidgets.QLabel(self.centralwidget)
self.label_7.setGeometry(QtCore.QRect(10, 180, 47, 13))
self.label_7.setObjectName("label_7")
self.label_8 = QtWidgets.QLabel(self.centralwidget)
self.label_8.setGeometry(QtCore.QRect(10, 210, 47, 13))
self.label_8.setObjectName("label_8")
self.label_9 = QtWidgets.QLabel(self.centralwidget)
self.label_9.setGeometry(QtCore.QRect(130, 30, 47, 13))
self.label_9.setObjectName("label_9")
self.label_10 = QtWidgets.QLabel(self.centralwidget)
self.label_10.setGeometry(QtCore.QRect(130, 60, 47, 13))
self.label_10.setObjectName("label_10")
self.label_11 = QtWidgets.QLabel(self.centralwidget)
self.label_11.setGeometry(QtCore.QRect(130, 90, 47, 13))
self.label_11.setObjectName("label_11")
self.label_12 = QtWidgets.QLabel(self.centralwidget)
self.label_12.setGeometry(QtCore.QRect(130, 120, 47, 13))
self.label_12.setObjectName("label_12")
self.label_13 = QtWidgets.QLabel(self.centralwidget)
self.label_13.setGeometry(QtCore.QRect(130, 150, 47, 13))
self.label_13.setObjectName("label_13")
self.label_14 = QtWidgets.QLabel(self.centralwidget)
self.label_14.setGeometry(QtCore.QRect(130, 180, 47, 13))
self.label_14.setObjectName("label_14")
self.label_15 = QtWidgets.QLabel(self.centralwidget)
self.label_15.setGeometry(QtCore.QRect(130, 210, 47, 13))
self.label_15.setObjectName("label_15")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(240, 260, 75, 23))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 326, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "TextLabel"))
self.label_2.setText(_translate("MainWindow", "TextLabel"))
self.label_3.setText(_translate("MainWindow", "TextLabel"))
self.label_4.setText(_translate("MainWindow", "TextLabel"))
self.label_5.setText(_translate("MainWindow", "TextLabel"))
self.label_6.setText(_translate("MainWindow", "TextLabel"))
self.label_7.setText(_translate("MainWindow", "TextLabel"))
self.label_8.setText(_translate("MainWindow", "TextLabel"))
self.label_9.setText(_translate("MainWindow", "TextLabel"))
self.label_10.setText(_translate("MainWindow", "TextLabel"))
self.label_11.setText(_translate("MainWindow", "TextLabel"))
self.label_12.setText(_translate("MainWindow", "TextLabel"))
self.label_13.setText(_translate("MainWindow", "TextLabel"))
self.label_14.setText(_translate("MainWindow", "TextLabel"))
self.label_15.setText(_translate("MainWindow", "TextLabel"))
self.pushButton.setText(_translate("MainWindow", "ok"))
Код:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(313, 294)
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(120, 10, 47, 13))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(20, 50, 47, 13))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(Form)
self.label_3.setGeometry(QtCore.QRect(110, 50, 47, 13))
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(Form)
self.label_4.setGeometry(QtCore.QRect(210, 50, 47, 13))
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(Form)
self.label_5.setGeometry(QtCore.QRect(60, 120, 47, 13))
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(Form)
self.label_6.setGeometry(QtCore.QRect(190, 120, 47, 13))
self.label_6.setObjectName("label_6")
self.label_7 = QtWidgets.QLabel(Form)
self.label_7.setGeometry(QtCore.QRect(130, 190, 47, 13))
self.label_7.setObjectName("label_7")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.label.setText(_translate("Form", "TextLabel"))
self.label_2.setText(_translate("Form", "TextLabel"))
self.label_3.setText(_translate("Form", "TextLabel"))
self.label_4.setText(_translate("Form", "TextLabel"))
self.label_5.setText(_translate("Form", "TextLabel"))
self.label_6.setText(_translate("Form", "TextLabel"))
self.label_7.setText(_translate("Form", "TextLabel"))
Ошибка при запуске программы
Traceback (most recent call last):
File "C:/docs/asd.py", line 34, in <module>
w.show_mywindow()
File "C:/docs/asd.py", line 14, in show_mywindow
self.ui.pushButton.clicked.connect(self.ui.close)
AttributeError: 'Ui_MainWindow' object has no attribute 'close'
Process finished with exit code 1
File "C:/docs/asd.py", line 34, in <module>
w.show_mywindow()
File "C:/docs/asd.py", line 14, in show_mywindow
self.ui.pushButton.clicked.connect(self.ui.close)
AttributeError: 'Ui_MainWindow' object has no attribute 'close'
Process finished with exit code 1