Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PySide2-如何从导入中使用自定义小部件?_Python_Pyside2 - Fatal编程技术网

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

Python PySide2-如何从导入中使用自定义小部件?,python,pyside2,Python,Pyside2,我试图定义一个自定义控件将其导入到我的主窗口,但当我这样做时,该控件没有应用我在类中定义的设置 这是基本的实现: 启动应用程序的基本主脚本 import sys from PySide2.QtWidgets import QApplication from mainwindow import MainWindow if __name__ == '__main__': try: app = QApplication(sys.argv) mainWindow =

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

这是基本的实现:

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

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;}")
输出如下:

正如您看到的,控件的背景是白色的,而不是在类中定义的红色


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

类小部件(QTextEdit): 定义初始化(自): 超级(小部件,自我)。\uuuu初始化 self.setFont(“信使”) self.setFontPointSize(12) 自选表格( “QTextEdit” {左侧填充:10;顶部填充:30;底部填充:10;右侧填充:10;” “背景:红色;}” )