PyQt - QtGui.QtMainWindow中的Widget

时间:2013-08-17 22:29:25

标签: python pyqt

我有一个窗口(QtGui.QMainWindow),我正在尝试添加文本,但我知道你不能在pyqt中向窗口添加文本,所以我将窗口小部件添加到窗口但是窗口小部件不仅仅显示对话框

这是窗口代码:

class MyWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
         super(MyWindow, self).__init__(parent)
         self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint)
         self.setWindowOpacity(.9)
         text_widget = text(self)
         self.widgets = QtGui.QStackedWidget()
         self.widgets.addWidget(text_widget)
         self.setStyleSheet("QMainWindow { background: 'black'}");

这是我要添加的小部件:

class text(QtGui.QWidget):
    def __init__(self, parent=None):
         super(text, self).__init__(parent)
         self.label1 = QtGui.QLabel('Welcome')
         layout = QtGui.QHBoxLayout()
         layout.addWidget(self.label1)
         self.setLayout(layout)a

如果需要,我可以发布显示我想要在主窗口中显示的对话窗口的整个代码。主窗口全屏,不透明度降低,因为我正在尝试添加背景,因此您无法退出我的登录屏幕,对话框显示无框窗口,因此无法移动。我希望对话框与小部件一起显示

这里有一些可能需要它的人的整个代码,因为它很长,我只是粘贴在bpaste上http://bpaste.net/show/Xus3ME83YTjiEK4gnqRu/

1 个答案:

答案 0 :(得分:3)

您必须将小部件设置为MyWindow MainWindow的中央小部件。 QMainWindow应该有一个中央的小部件集。

class MyWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowOpacity(.9)
        text_widget = text(self)
        self.setCentralWidget(text_widget)
        self.setStyleSheet("QMainWindow { background: 'black'}");

或者堆栈小部件,或者其他什么。但是如果你创建一个QMainWindow,那么你必须设置它的中心小部件,如果你想要它出现。

<强>更新

class MyWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowOpacity(.9)
        text_widget = text(self)
        self.setCentralWidget(text_widget)
        self.setStyleSheet("QMainWindow { background: 'black'}");

class text(QtGui.QWidget):
    def __init__(self, parent=None):
        super(text, self).__init__(parent)
        self.label1 = QtGui.QLabel('Welcome', self)
        self.label1.move(100, 10)
        self.label1.setStyleSheet("QLabel { color : red; font-size: 28px; }")