簡體   English   中英

PySide2 - 如何使用導入的自定義小部件?

[英]PySide2 - How to use a custom widget from import?

我正在嘗試定義一個自定義控件以將其導入我的主 window,但是當我這樣做時,該控件沒有應用我在 class 中定義的設置。

這是基本實現:

啟動應用程序的基本主腳本。

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])

主窗口 class:

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;}")

output 是這樣的:

如您所見,控件的背景是白色而不是紅色,如 class 中定義的那樣

問題是您已將樣式表應用於另一個也是 QTextEdit 但是局部變量的小部件。 您必須將更改應用於相同的 class:

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;}"
        )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM