43991


pyqt5でボタンをレイアウトするとき、`setSpacing(0)`を使えばウィジット間のスペースを最小にすることが出来ます。これを使って、次のようなコードを書いてみました。

[code]

    import sys
    from PyQt5.QtWidgets import (QWidget,
        QVBoxLayout, QHBoxLayout, QApplication, QPushButton, QLabel, QLineEdit)
    from PyQt5 import*
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    
    class Example(QWidget):
    
        def __init__(self):
            super().__init__()
    
            self.initUI()
    
    
        def initUI(self):
            #font=QtGui.QFont("00コミック7",20)
    
            btn1=QPushButton("1")
            btn1.setFixedSize(100,100)
    
            btn2=QPushButton("2")
            btn2.setFixedSize(120,100)
    
            btn3=QPushButton("3")
            btn3.setFixedSize(50,70)
    
            btn4=QPushButton("4")
            btn4.setFixedSize(90,120)
    
            btn5=QPushButton("5")
            btn5.setFixedSize(150,50)
    
            btn6=QPushButton("6")
            btn6.setFixedSize(70,100)
    
            btn7=QPushButton("7")
            btn7.setFixedSize(30,140)
    
            btn8=QPushButton("8")
            btn8.setFixedSize(100,100)
    
    
    
            layout=QVBoxLayout()
            layout.setSpacing(0)
    
            layout2=QHBoxLayout()
            layout2.setSpacing(0)
            layout2.addWidget(btn1,alignment=(Qt.AlignBottom | Qt.AlignRight))
            layout2.addWidget(btn2,alignment=(Qt.AlignBottom | Qt.AlignLeft))
    
            layout3=QHBoxLayout()
            layout3.setSpacing(0)
            layout3.addWidget(btn3,alignment=(Qt.AlignBottom | Qt.AlignRight))
            layout3.addWidget(btn4,alignment=(Qt.AlignBottom | Qt.AlignCenter))
            layout3.addWidget(btn5,alignment=(Qt.AlignBottom | Qt.AlignLeft))
    
            layout4=QHBoxLayout()
            layout4.setSpacing(0)
            layout4.addWidget(btn6,alignment=(Qt.AlignBottom | Qt.AlignRight))
            layout4.addWidget(btn7,alignment=(Qt.AlignBottom | Qt.AlignCenter))
            layout4.addWidget(btn8,alignment=(Qt.AlignBottom | Qt.AlignLeft))        
    
            layout.addLayout(layout2)
            layout.addLayout(layout3)
            layout.addLayout(layout4)
    
            self.setLayout(layout)
    
            self.setWindowTitle('Absolute')    
            self.show()
    
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())
    
[/code]

これを実行すると次のようなボタンのレイアウトが出来ます  
[![画像](https://i.stack.imgur.com/1mcrV.png)](https://i.stack.imgur.com/1mcrV.png)  
しかし、これではボタン6，7，8の間にスペースが残ってしまいます。このスペースをなくしたいです。


CC BY-SA 4.0
2018-05-14T05:08:26.653
43970
2018-05-15T00:33:43.683
26529
question
python pyqt
pyqt5でボタンの間のスペースが残ってしまう


`btn8`を追加する行の後ろに次の行を追加すれば、スペースがなくなります。

[code]

    layout4.addStretch(0)
    
[/code]


CC BY-SA 4.0
2018-05-15T00:33:43.683
43991
2018-05-15T00:33:43.683
8488
43970
answer