【发布时间】:2022-01-09 02:26:55
【问题描述】:
我想在MainWindow 初始化后添加一个标签小部件。如果我在MainWindow 中调用该函数但不是从另一个函数调用该函数,它工作正常,该函数已执行,但不会将新标签添加到窗口。
QtWidgets.QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
self.shadow = QGraphicsDropShadowEffect(self)
self.shadow.setBlurRadius(50)
self.shadow.setXOffset(0)
self.shadow.setYOffset(0)
self.ui.centralwidget.setGraphicsEffect(self.shadow)
self.setWindowTitle(" NetView ")
# QSizeGrip(self.ui.size_grip)
self.ui.minimizeBtn.clicked.connect(lambda: self.showMinimized())
self.ui.resmaxBtn.clicked.connect(lambda: self.restore_or_maximize_window())
self.ui.closeBtn.clicked.connect(lambda: self.close())
self.ui.lockBtn.clicked.connect(lambda: self.netLock())
self.ui.unlockBtn.clicked.connect(lambda: self.unLock())
## works fine
self.createNewWidget(0,0,"test")
def createNewWidget(self, rowNumber, columNumber, client_name):
new_label_name = 'label_'+client_name
#print(new_label_name)
self.label_new = QtWidgets.QLabel(self.ui.scrollAreaWidgetContents)
self.label_new.setMinimumSize(QtCore.QSize(200, 150))
self.label_new.setMaximumSize(QtCore.QSize(200, 150))
#self.label_new.setStyleSheet("background-color:rgb(255,85,255);")
self.label_new.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.label_new.setFrameShadow(QtWidgets.QFrame.Raised)
self.label_new.setObjectName(new_label_name)
def createdisplay(self)
##does not work
self.createNewWidget(0,1,"test1")
【问题讨论】:
-
添加
self.label_new.show()理论上可以解决问题,但真正的问题是您应该实际使用layout managers。 -
谢谢,不过没用,加在createNewWidget和ceatedisplay函数的最后。
-
如前所述,您应该使用布局管理器。