【问题标题】:make a layout widget to be floating ouside of mainwindow pyqt5使布局小部件浮动在主窗口pyqt5之外
【发布时间】:2020-10-16 18:26:21
【问题描述】:

每个人。 我想在主窗口的布局中浮动一个小部件。 小部件从布局中消失但未显示在屏幕上 从下面的代码可以看出。我浮动了两个标签“lbl_title”和“lbl_icon” 它们似乎是浮动的,但没有显示在屏幕上。 我的代码来了。 如果您松开注释行,则 lbl_icon 和标题将从布局中删除,但不会显示在我的屏幕上

    from PyQt5.QtCore import QDir, Qt, QUrl
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtWidgets import (QApplication, QFileDialog, QHBoxLayout, QLabel,
        QPushButton, QSizePolicy, QSlider, QStyle, QVBoxLayout, QWidget)
from PyQt5.QtWidgets import QMainWindow,QWidget, QPushButton, QAction,QGridLayout
from PyQt5.QtGui import QIcon,QPixmap
import sys
from PyQt5.QtCore import *

class CommonLessonItem(QWidget):

    def __init__(self,parent):

        super(CommonLessonItem,self).__init__(parent)
        
        self.lbl_title = QLabel(self)
        self.lbl_description = QLabel(self)
        self.lbl_icon = QLabel(self)
        self.__initUI()
        self.isChild = False

    def __initUI(self):
        
        #set layout
        self.layout = QGridLayout(self)
        self.layout.addWidget(self.lbl_title,0,0,1,19)
        self.layout.addWidget(self.lbl_icon,0,19,1,1)
        self.layout.addWidget(self.lbl_description,1,0,1,20)
        self.lbl_icon.setWindowFlags(Qt.FramelessWindowHint|Qt.Window)
        self.lbl_icon.move(100,100)
        self.lbl_title.setWindowFlags(Qt.FramelessWindowHint|Qt.Window)
        self.lbl_title.move(100,100)
        
        #initialize info
        self.setInfo("Title","Description",None)
        self.setLayout(self.layout)


    def setInfo(self,title,description,iconPath):
        self.lbl_title.setText(title)
        self.lbl_description.setText(description)
        if(iconPath is not None):
            self.lbl_icon.setPixmap(QPixmap(iconPath))
    def moveEvent(self,event):
        super().moveEvent(event)
        


if __name__ == "__main__":
    app = QApplication(sys.argv)
    mw = CommonLessonItem(None)
    # mw.setSize(10,200)
    mw.show()
    sys.exit(app.exec_())

我需要你的帮助。

【问题讨论】:

  • 我编辑了我的问题
  • 什么是共同点*?你会明白,如果你没有这些类的代码,那么就不可能重现你的代码
  • 哦。我很抱歉。我已经更改了我的代码

标签: python layout pyqt5 floating


【解决方案1】:

每当一个小部件通过将父级设置为None 或像您的情况一样设置Window 标志(但我不建议这种方法)成为顶级窗口时,必须调用show()

windowFlags中所述:

注意:此函数在更改窗口的标志时调用 setParent(),导致窗口小部件被隐藏。您必须调用 show() 才能使小部件再次可见..

添加self.lbl_icon.show()self.lbl_title.show()改变它们的窗口状态之后。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多