我有一个程序,其中有三个窗口。我不明白如何只使用一个窗口(显示文本,使用按钮)。
这是代码:main.py
from PyQt5 import QtCore, QtGui, QtWidgets
from ui_inst import Ui_Inst
from ui_uch import Ui_Uch
class Ui_Start(object):
def setupUi(self, Ui_Start):
Ui_Start.setObjectName("Ui_Start")
Ui_Start.resize(443, 293)
self.lineEdit1 = QtWidgets.QLineEdit(Ui_Start)
self.lineEdit1.setGeometry(QtCore.QRect(50, 80, 321, 51))
self.lineEdit1.setStyleSheet("")
self.lineEdit1.setText("")
self.lineEdit1.setObjectName("lineEdit")
self.textEdit = QtWidgets.QTextEdit(Ui_Start)
self.textEdit.setGeometry(QtCore.QRect(10, 30, 421, 41))
self.textEdit.setObjectName("textEdit")
self.pushButton_2 = QtWidgets.QPushButton(Ui_Start)
self.pushButton_2.setGeometry(QtCore.QRect(150, 210, 141, 58))
self.pushButton_2.setStyleSheet("font: 16pt \"Molot\";")
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton = QtWidgets.QPushButton(Ui_Start)
self.pushButton.setGeometry(QtCore.QRect(50, 140, 321, 58))
self.pushButton.setStyleSheet("font: 20pt \"Molot\";")
self.pushButton.setObjectName("pushButton")
self.retranslateUi(Ui_Start)
QtCore.QMetaObject.connectSlotsByName(Ui_Start)
def retranslateUi(self, Ui_Start):
_translate = QtCore.QCoreApplication.translate
Ui_Start.setWindowTitle(_translate("Ui_Start", "Ui_Start"))
self.textEdit.setHtml(_translate("Ui_Start", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:16pt;\">Введите номер и букву класса:</span></p></body></html>"))
self.pushButton_2.setText(_translate("Ui_Start", "инструкция"))
self.pushButton.setText(_translate("Ui_Start", "Найти класс"))
class MyInst(QtWidgets.QWidget, Ui_Inst):
def __init__(self, parent=None):
super(MyInst, self).__init__(parent)
self.setupUi(self)
class MyUch(QtWidgets.QWidget, Ui_Uch):
def __init__(self, parent=None):
super(MyUch, self).__init__(parent)
self.setupUi(self)
class Main(QtWidgets.QWidget, Ui_Start):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.setupUi(self)
self.pushButton_2.clicked.connect(self.onClicked)
self.pushButton.clicked.connect(self.uch)
def onClicked(self):
self.inst = MyInst()
self.inst.show()
def uch(self):
self.uch = MyUch()
self.uch.show()
self.lineEdit2.setText("1")
StyleSheet = '''
QPushButton {
font: bold italic 16pt 'Comic Sans MS';
background-color: silver;
width: 75px ;
height: 50px;
border: none;
text-align: center;
}
QPushButton:hover {
background: #C9C0BB;
}
QPushButton:pressed {
background-color: blue;
}
'''
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setStyleSheet(StyleSheet)
file = QtCore.QFile("dark.qss")
file.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text)
stream = QtCore.QTextStream(file)
app.setStyleSheet(stream.readAll())
w = Main()
w.show()
sys.exit(app.exec_())
ui_inst.py:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Inst(object):
def setupUi(self, Inst):
Inst.setObjectName("Ui_Inst")
Inst.resize(1111, 883)
self.textEdit = QtWidgets.QTextEdit(Inst)
self.textEdit.setGeometry(QtCore.QRect(0, 10, 1111, 41))
self.textEdit.setObjectName("textEdit")
self.text_inctru = QtWidgets.QTextEdit(Inst)
self.text_inctru.setGeometry(QtCore.QRect(20, 60, 1071, 811))
self.text_inctru.setObjectName("text_inctru")
self.retranslateUi(Inst)
QtCore.QMetaObject.connectSlotsByName(Inst)
def retranslateUi(self, Inst):
_translate = QtCore.QCoreApplication.translate
Inst.setWindowTitle(_translate("Inst", "Inst"))
self.textEdit.setHtml(_translate("Inst", "<!DOCTYPE HTML PUBLIC
\"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-
html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style
type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-
size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px;
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-
indent:0px;\"><span style=\" font-size:22pt;\">Инструкция</span></p>
</body></html>"))
ui_uch.py :
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Uch(object):
def setupUi(self, Uch):
Uch.setObjectName("Uch")
Uch.resize(718, 336)
self.lineEdit = QtWidgets.QLineEdit(Uch)
self.lineEdit.setGeometry(QtCore.QRect(60, 40, 611, 81))
self.lineEdit.setStyleSheet("font: 20pt \"Molot\";")
self.lineEdit.setObjectName("lineEdit1")
self.pushButton = QtWidgets.QPushButton(Uch)
self.pushButton.setGeometry(QtCore.QRect(190, 140, 341, 51))
self.pushButton.setStyleSheet("font: 27pt \"Molot\";")
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(Uch)
self.pushButton_2.setGeometry(QtCore.QRect(60, 222, 601, 61))
self.pushButton_2.setStyleSheet("font: 45pt \"Molot\";")
self.pushButton_2.setObjectName("pushButton_2")
self.label = QtWidgets.QLabel(Uch)
self.label.setGeometry(QtCore.QRect(70, 0, 601, 41))
self.label.setStyleSheet("font: 25pt \"Molot\";")
self.label.setObjectName("label")
self.retranslateUi(Uch)
QtCore.QMetaObject.connectSlotsByName(Uch)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Uch", "Uch"))
self.pushButton.setText(_translate("Uch", "Выбрать ученика"))
self.pushButton_2.setText(_translate("Uch", "Задать вопрос"))
self.label.setText(_translate("Uch", "Отвечает ученик:"))
您的主窗口是由一个类
Main和您从Ui_Start.您可以像这样访问此主窗口中的对象:
当您单击该按钮时,
self.pushButton_2您会创建另一个窗口,这将是self.inst. 您可以像这样访问此 (self.inst) 对象的属性:当您单击该按钮时,
self.pushButton您会创建另一个窗口,这将是self.uch. 您可以像这样访问此 (self.uch) 对象的属性:这些其他窗口将是
ОКНАМИ因为没有父窗口的小部件将是一个窗口。要显示这些 OTHER WINDOWS,您必须分别执行self.inst.show()或self.uch.show()。