PySide2-如何使用导入中的自定义小部件?

问题描述 投票:0回答:1

我正在尝试定义一个自定义控件以将其导入到我的主窗口,但是当我这样做时,该控件没有应用我在该类中定义的设置。

这是基本的实现:

启动应用程序的基本主脚本。

import sys
from PySide2.QtWidgets import QApplication

from mainwindow import MainWindow

if __name__ == '__main__':
   try:
       app = QApplication(sys.argv)
       mainWindow = MainWindow()
       mainWindow.show()
       app.exec_()
       sys.exit(0)
   except NameError:
       print("Name error: ", sys.exc_info()[1])
   except SystemExit:
       print("Closing process...")
   except Exception:
       print(sys.exc_info()[1])

主窗口类:

from PySide2.QtWidgets import QMainWindow, QApplication

from widget import Widget

class MainWindow(QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__()
        self.setGui()


    def setGui(self):
        self.setWindowTitle("Widget Test")
        geometry = QApplication.desktop().availableGeometry(self)
        self.setGeometry(0, 0, geometry.width() * 0.3, geometry.height() * 0.3)

        widget = Widget()
        self.setCentralWidget(widget)

和控件:

from PySide2.QtWidgets import QTextEdit

class Widget(QTextEdit):

    def __init__(self):
        super(Widget, self).__init__()
        self.setWidget()

    def setWidget(self):
        editor = QTextEdit()
        editor.setFont('Courier')
        editor.setFontPointSize(12)
        editor.setStyleSheet("QTextEdit "
                           "{padding-left:10; padding-top:30;padding-bottom:10; padding-right:10; "
                           "background:red;}")

输出是这样:

如您所见,控件的背景是白色,而不是在该类中定义的红色

“”

python pyside2
1个回答
0
投票

问题是您已将样式表应用于另一个也是QTextEdit但还是局部变量的小部件。您必须将更改应用于相同的类:

class Widget(QTextEdit):
    def __init__(self):
        super(Widget, self).__init__()
        self.setFont("Courier")
        self.setFontPointSize(12)
        self.setStyleSheet(
            "QTextEdit "
            "{padding-left:10; padding-top:30;padding-bottom:10; padding-right:10; "
            "background:red;}"
        )
© www.soinside.com 2019 - 2024. All rights reserved.