как я использую QTextEdit в pyqt5, чтобы показать все стили HTML (включая стиль CSS) - PullRequest
1 голос
/ 06 апреля 2019

Python 3.6 PYQT 5.12.1

Я готов показать нужный мне стиль с помощью pyqt5, и я знал, что QTextEdit в pyqt5 может отображать HTML-код довольно хорошо (у меня есть некоторый опыт в веб-разработке)поэтому я решил использовать html / css, чтобы показать свой стиль.Тем не менее, это может иметь некоторые проблемы при отображении кода в CSS.Что я могу сделать, чтобы он мог показать css / javascript?Если нет, можете порекомендовать другие методы для изменения стиля?

Может отображаться какой-то стиль, например width = "100" height = "100", когда я кодирую его в html, но не css, а некоторые не могут отображаться как border-radius:50%;.Это не даст никакого эффекта, когда я кодирую стиль в CSS.Кстати, я импортировал код CSS.Код CSS ничего не делает в QTextEdit (но это нормально в html)

.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class WINDOW(QMainWindow):
    def __init__(self):
        super().__init__()
        self.init()

    def init(self):
        w_width,w_height,w_x,w_y  = 700,640,700,200
        self.set_size_pos(w_width,w_height,w_x,w_y);
        self.set_message_textedit()
        self.message_textedit.setHtml(self.get_html())        
        self.show()

    def set_size_pos(self,width,height,x,y):
        '''
        set window's width , height and position
        '''
        self.resize(width,height)
        self.move(x,y)

    def set_message_textedit(self):
        self.message_textedit = QTextEdit(self)
        self.message_textedit.setFont(QFont("Microsoft YaHei",12))
        self.message_textedit.resize(680,420)
        self.message_textedit.move(10,50)
        self.message_textedit.setReadOnly(True)

    def get_html(self):
        html = ""
        with open("./chat-style/chat.html","r",encoding = "utf-8") as f:
            html = f.read()
        return html

if __name__ == '__main__':
    app = QApplication(sys.argv)
    test = WINDOW()
    sys.exit(app.exec_())

.html

<!doctype html>
<html lange="zh-CN">
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" type="text/css" href="./chat.css">
        <script src = "chat.js"></script>
    </head>
    <body>
        <img class = "tx" src="E:\study\assiataant\picture\icon.jpg">
        <div>Welcome ~ Don!</div>
    </body>
</html>

.css

.tx
{        
    border-radius:50%;
    width:  30;
    height: 30;
}

1 Ответ

1 голос
/ 06 апреля 2019

QTextEdit поддерживает только CSS 2.1, как указано the docs :

Поддерживаются все классы селекторов CSS 2.1, кроме селекторов псевдоклассов, таких как: first-child,: visit и: hover.

Но border-radius был введен в CSS3. Таким образом, вы не можете использовать это, к сожалению. Я рекомендую вам прочитать следующую ссылку, чтобы вы знали разрешенные теги.

Другой альтернативой является использование QWebEngineView, который поддерживает следующие теги:

*. Py

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import os
import sys
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        view = QtWebEngineWidgets.QWebEngineView()
        file = os.path.join(
            os.path.dirname(os.path.realpath(__file__)), 
            "chat-style/chat.html"
        )
        view.load(QtCore.QUrl.fromLocalFile(file))
        self.setCentralWidget(view)
        self.resize(640, 480)


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

Если у вас не установлен QWebEngineView, вы должны установить его с помощью следующей команды:

python -m pip install PyQtWebEngine
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...