Стилизация полос прокрутки в QTextEdit (Использование пользовательских изображений) - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть простой пользовательский интерфейс ниже, и я хочу настроить все в нем. Мне удалось использовать пользовательское окно с использованием прозрачного PNG, и я также попытался создать пользовательские кнопки с разными состояниями, и все они отлично работают. Кто-нибудь знает, как оформить полосы прокрутки в QTextEdit?

Я искал везде и ничего не мог найти в полосах прокрутки QTextEdit.

#!usr/bin/env python
#-*- coding: utf-8 -*-

import sys
import os.path #file check
from PyQt5 import QtWidgets, QtCore, QtGui #pyqt stuff
from PyQt5.QtCore import QPoint #dragable window
from gui.guiMain import Ui_main

class mainUi(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        self.ver = '2.0.0'
        QtWidgets.QMainWindow.__init__(self, None)
        self.setAcceptDrops(True) #accept file drops
        self.ui = Ui_main()
        self.ui.setupUi(self)
        self.oldPos = None
        self.setFixedSize(401, 286) #no resize
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint) #frameless window
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.setAttribute(QtCore.Qt.WA_NoSystemBackground)
        self.setStyleSheet("background:transparent;")
        self.ui.exitBtn.setStyleSheet("""
                QPushButton {
                    qproperty-iconSize: 32px 32px;
                    image: url(":/res/icons/close.png");
                }
                QPushButton:hover {
                    image: url(":/res/icons/close-hover.png");
                }
                QPushButton:pressed {
                    image: url(":/res/icons/close-focus.png");
                }
            """)
        self.ui.btnBtn.setStyleSheet("""
                QPushButton {
                    qproperty-iconSize: 32px 32px;
                    image: url(":/res/icons/main.png");
                }
                QPushButton:hover {
                    image: url(":/res/icons/main-hover.png");
                }
                QPushButton:pressed {
                    image: url(":/res/icons/main-focus.png");
                }
            """)
        #ui functions
        self.ui.exitBtn.clicked.connect(self._exit)
        self.ui.btnBtn.clicked.connect(self._btnBtn)

        ##########################
        ####### Variables ########
        ##########################
        title = 'Test Window'
        self.setWindowTitle(title)
        self.ui.titleLbl.setText(title)
        self.ui.titleLbl.setStyleSheet('QLabel {color: white; font-size:35px; font-family:IranNastaliq;}')
        text = '<p style="text-align:center; color:white;">'
        sher = """12345
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text..."""
        sher = sher.replace('\n', '<br />')
        text += sher
        text += '</p>'
        self.ui.textEdit.setText(text)
        self.ui.textEdit.setStyleSheet("""
            QTextEdit {
                font-size:15px;
                font-family:Vazir FD;
            }
        """)

    ##############################
    ####### Functions ############
    ##############################
    def mousePressEvent(self, event):
        self.oldPos = event.globalPos()

    def mouseMoveEvent(self, event):
        if self.oldPos:
            delta = QPoint (event.globalPos() - self.oldPos)
            #print(delta)
            self.move(self.x() + delta.x(), self.y() + delta.y())
            self.oldPos = event.globalPos()

    def _btnBtn(self):
        print('btnBtn')

    def _exit(self):
        self.close()

    def closeEvent(self, event):
        self.close()

def main():
    app = QtWidgets.QApplication(sys.argv)
    QtGui.QFontDatabase.addApplicationFont(':/res/fonts/Vazir-FD.ttf') #add custom font no install
    QtGui.QFontDatabase.addApplicationFont(':/res/fonts/IranNastaliq.ttf') #add custom font no install
    main = mainUi()
    main.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

1 Ответ

0 голосов
/ 05 ноября 2018

Чтобы сделать это, вы должны сначала добавить полосу прокрутки, а затем прикрепить ее к вашему QTextEdit, используя setVerticalScrollBar. Затем вы можете настроить сам QScrollBar. Вот пример. В своем UI-файле я добавил полосу прокрутки sbar, которая прикрепляется к textEdit:

#!usr/bin/env python
#-*- coding: utf-8 -*-

import sys
import os.path #file check
from PyQt5 import QtWidgets, QtCore, QtGui #pyqt stuff
from PyQt5.QtCore import QPoint #dragable window
from gui.guiMain import Ui_main

class mainUi(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        self.ver = '2.0.0'
        QtWidgets.QMainWindow.__init__(self, None)
        self.setAcceptDrops(True) #accept file drops
        self.ui = Ui_main()
        self.ui.setupUi(self)
        self.oldPos = None
        self.setFixedSize(401, 286) #no resize
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint) #frameless window
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.setAttribute(QtCore.Qt.WA_NoSystemBackground)
        self.setStyleSheet("background:transparent;")
        self.ui.exitBtn.setStyleSheet("""
                QPushButton {
                    qproperty-iconSize: 32px 32px;
                    image: url(":/res/icons/close.png");
                }
                QPushButton:hover {
                    image: url(":/res/icons/close-hover.png");
                }
                QPushButton:pressed {
                    image: url(":/res/icons/close-focus.png");
                }
            """)
        self.ui.btnBtn.setStyleSheet("""
                QPushButton {
                    qproperty-iconSize: 32px 32px;
                    image: url(":/res/icons/main.png");
                }
                QPushButton:hover {
                    image: url(":/res/icons/main-hover.png");
                }
                QPushButton:pressed {
                    image: url(":/res/icons/main-focus.png");
                }
            """)
        #ui functions
        self.ui.exitBtn.clicked.connect(self._exit)
        self.ui.btnBtn.clicked.connect(self._btnBtn)

        ##########################
        ####### Variables ########
        ##########################
        title = 'Test Window'
        self.setWindowTitle(title)
        self.ui.titleLbl.setText(title)
        self.ui.titleLbl.setStyleSheet('QLabel {color: white; font-size:35px; font-family:IranNastaliq;}')
        self.ui.sbar.setStyleSheet("""
QScrollBar:vertical {
    border: 1px solid #999999;
    background:white;
    width:10px;
    margin: 0px 0px 0px 0px;
}
QScrollBar::handle:vertical {
    background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
    stop: 0 rgb(32, 47, 130), stop: 0.5 rgb(32, 47, 130), stop:1 rgb(32, 47, 130));
    min-height: 0px;
}
QScrollBar::add-line:vertical {
    background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
    stop: 0 rgb(32, 47, 130), stop: 0.5 rgb(32, 47, 130),  stop:1 rgb(32, 47, 130));
    height: 0px;
    subcontrol-position: bottom;
    subcontrol-origin: margin;
}
QScrollBar::sub-line:vertical {
    background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
    stop: 0  rgb(32, 47, 130), stop: 0.5 rgb(32, 47, 130),  stop:1 rgb(32, 47, 130));
    height: 0 px;
    subcontrol-position: top;
    subcontrol-origin: margin;
}
        """)
        self.ui.textEdit.setVerticalScrollBar(self.ui.sbar)
        text = '<p style="text-align:center; color:white;">'
        sher = """12345
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text...
Sample text..."""
        sher = sher.replace('\n', '<br />')
        text += sher
        text += '</p>'
        self.ui.textEdit.setText(text)
        self.ui.textEdit.setStyleSheet("""
            QTextEdit {
                font-size:15px;
                font-family:Vazir FD;
            }
        """)

    ##############################
    ####### Functions ############
    ##############################
    def mousePressEvent(self, event):
        self.oldPos = event.globalPos()

    def mouseMoveEvent(self, event):
        if self.oldPos:
            delta = QPoint (event.globalPos() - self.oldPos)
            #print(delta)
            self.move(self.x() + delta.x(), self.y() + delta.y())
            self.oldPos = event.globalPos()

    def _btnBtn(self):
        print('btnBtn')

    def _exit(self):
        self.close()

    def closeEvent(self, event):
        self.close()

def main():
    app = QtWidgets.QApplication(sys.argv)
    QtGui.QFontDatabase.addApplicationFont(':/res/fonts/Vazir-FD.ttf') #add custom font no install
    QtGui.QFontDatabase.addApplicationFont(':/res/fonts/IranNastaliq.ttf') #add custom font no install
    main = mainUi()
    main.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...