我正在尝试定义一个自定义控件以将其导入到我的主窗口,但是当我这样做时,该控件没有应用我在该类中定义的设置。
这是基本的实现:
启动应用程序的基本主脚本。
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但还是局部变量的小部件。您必须将更改应用于相同的类:
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;}"
)