Как вывести текстовый документ на экран PyQt5

Рейтинг: 0Ответов: 1Опубликовано: 09.05.2023
    import sys
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Gamepol(object):
    def setupUi(self, Gamepol):
        Gamepol.setObjectName("Gamepol")
        Gamepol.setFixedSize(1334, 1000)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(Gamepol.sizePolicy().hasHeightForWidth())
        Gamepol.setSizePolicy(sizePolicy)
        Gamepol.setStyleSheet("background-color: rgb(184, 234, 255);")
        
        self.retranslateUi(Gamepol)
        QtCore.QMetaObject.connectSlotsByName(Gamepol)

    def retranslateUi(self, Gamepol):
        _translate = QtCore.QCoreApplication.translate
        Gamepol.setWindowTitle(_translate("Gamepol", "Collabio"))

class MainWindow(QtWidgets.QMainWindow, Ui_Gamepol):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.btn = QtWidgets.QPushButton(self)
        self.btn.setCheckable(True)
        self.btn.setGeometry(QtCore.QRect(50, 30, 60, 60))
        self.btn.setStyleSheet("QPushButton{\n"
"border:none;\n"
"background-color: red;\n"
"font: 34px \"MS Shell Dlg 2\";\n"
"color: white;\n"
"border-radius: 40px;\n"
"}")
        self.btn.setObjectName("btn")
        self.btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.btn.clicked.connect(self.openfile)
        self.btn.setFocus()

    def openfile(self):
        # kod

    

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

Так же есть какой-то текстовый файл, например text.txt, который нужно при нажатии на кнопку btn выводить на экран

Ответы

▲ 2Принят

Используйте QtWidgets.QTextBrowser:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Gamepol(object):
    def setupUi(self, Gamepol):
        Gamepol.setObjectName("Gamepol")
        Gamepol.setFixedSize(1334, 1000)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(Gamepol.sizePolicy().hasHeightForWidth())
        Gamepol.setSizePolicy(sizePolicy)
        Gamepol.setStyleSheet("background-color: rgb(184, 234, 255);")

        self.retranslateUi(Gamepol)
        QtCore.QMetaObject.connectSlotsByName(Gamepol)

    def retranslateUi(self, Gamepol):
        _translate = QtCore.QCoreApplication.translate
        Gamepol.setWindowTitle(_translate("Gamepol", "Collabio"))


class MainWindow(QtWidgets.QMainWindow, Ui_Gamepol):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.btn = QtWidgets.QPushButton(self)
        self.btn.setCheckable(True)
        self.btn.setGeometry(QtCore.QRect(50, 30, 60, 60))
        self.btn.setStyleSheet("QPushButton{\n"
                               "border:none;\n"
                               "background-color: red;\n"
                               "font: 34px \"MS Shell Dlg 2\";\n"
                               "color: white;\n"
                               "border-radius: 40px;\n"
                               "}")
        self.btn.setObjectName("btn")
        self.btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.btn.clicked.connect(self.openfile)
        self.btn.setFocus()

        self.textfield = QtWidgets.QTextBrowser(self)
        self.textfield.setGeometry(QtCore.QRect(100, 100, 200, 600))

    def openfile(self):
        with open('text.txt', 'r') as f:
            self.textfield.setText(f.read())


# kod


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())