Python pyqt只添加框之间的空格

Python pyqt只添加框之间的空格,python,pyqt,Python,Pyqt,我用pyqt写了一个小例子。它首先绘制一些文本,然后在下面添加三个按钮。但是,按钮下有一些空间。如何删除这些空间 我尝试了addStrech(1),但是文本不见了 这是我的密码: import sys from PyQt4 import QtGui, QtCore class CardWidget(QtGui.QWidget): def __init__(self): super(CardWidget, self).__init__() self.ini

我用pyqt写了一个小例子。它首先绘制一些文本,然后在下面添加三个按钮。但是,按钮下有一些空间。如何删除这些空间

我尝试了
addStrech(1)
,但是文本不见了

这是我的密码:

import sys
from PyQt4 import QtGui, QtCore

class CardWidget(QtGui.QWidget):
    def __init__(self):
        super(CardWidget, self).__init__()
        self.initUI()

    def initUI(self):
        lButton = QtGui.QPushButton("left")
        mButton = QtGui.QPushButton("middle")
        rButton = QtGui.QPushButton("right")

        sometext = DrawText()

        hbox = QtGui.QHBoxLayout()
        hbox.addWidget(lButton)
        hbox.addStretch(1)
        hbox.addWidget(mButton)
        hbox.addStretch(1)
        hbox.addWidget(rButton)

        WButton = QtGui.QWidget()
        WButton.setLayout(hbox)

        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(sometext)
        vbox.addStretch(1)


        vbox.addWidget(WButton)
        self.setLayout(vbox)

        self.setGeometry(300, 300, 480, 370)
        self.setWindowTitle('Flashcards')
        self.show()

class DrawText(QtGui.QWidget):
    def __init__(self):
        super(DrawText, self).__init__()
        self.initUI()

    def initUI(self):
        self.text = 'some text'

        self.setGeometry(0, 0, 200, 400)
        #self.setWindowTitle('Draw text')
        self.show()

    def paintEvent(self, event):
        qp = QtGui.QPainter()
        qp.begin(self)
        self.drawText(event, qp)
        qp.end()

    def drawText(self, event, qp):
        qp.setPen(QtGui.QColor(168, 34, 3))
        qp.setFont(QtGui.QFont('Decorative', 10))
        qp.drawText(event.rect(), QtCore.Qt.AlignCenter, self.text)        

def main():
    app = QtGui.QApplication(sys.argv)
    ex = CardWidget()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

我在主窗口中使用了
setFixedSize(int,int)
,以避免
addStretch(1)
,如下所示:

def initUI(self):
    lButton = QtGui.QPushButton("left")
    mButton = QtGui.QPushButton("middle")
    rButton = QtGui.QPushButton("right")

    sometext = DrawText()

    hbox = QtGui.QHBoxLayout()
    hbox.addWidget(lButton)
    hbox.addWidget(mButton)
    hbox.addWidget(rButton)

    WButton = QtGui.QWidget()
    WButton.setLayout(hbox)

    vbox = QtGui.QVBoxLayout()
    vbox.addWidget(sometext)
    vbox.addWidget(WButton)

    self.setLayout(vbox)

    self.setGeometry(300, 300, 0, 0)
    w = WButton.sizeHint().width()+10
    h = WButton.sizeHint().height()+sometext.sizeHint().height()+40
    self.setFixedSize(w, h)
    self.setWindowTitle('Flashcards')
    self.show()
这更像是你想要的吗?您还可以只将高度设置为固定,这样就不会有额外的上下空间