0

私はpyqtで小さな例を書きました。最初にテキストを描画し、その下に 3 つのボタンを追加します。ただし、ボタンの下には若干のスペースがあります。それらのスペースを削除するには?

試してみ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()
4

1 に答える 1

1

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()

それはあなたが望んでいる方法に似ていますか?高さだけを固定することもできるので、上下に余分なスペースがなくなります。

于 2013-07-16T14:03:45.157 に答える