2017-07-06 6 views
1

私のウィジェットのボタン間のスペースを削除する方法を教えてもらえますか?私はコマンドを設定することによってそれをしたい、setSpacing(0)、しかし私はそれを設定する必要がありますか分からない。PyQt:QGridLayoutでスペースを設定する

マイコード:

import sys 
from PyQt5.QtCore import pyqtSignal, QObject 
from PyQt5.QtWidgets import QMainWindow, QApplication, QGridLayout, 
QPushButton,QWidget 


class Saper(QWidget): 

    def __init__(self): 
     super().__init__() 
     self.initUI() 

    def initUI(self): 

     grid = QGridLayout() 
     self.setLayout(grid)  

     names = ['Cls', 'Bck', '', 'Close', 
       '7', '8', '9', '/', 
       '4', '5', '6', '*', 
       '1', '2', '3', '-', 
       '0', '.', '=', '+', 
       'f','i','f','i'] 

     positions = [(i,j) for i in range(6) for j in range(4)] 

     for position, name in zip(positions, names): 

     if name == '': 
      continue 
     button = QPushButton(name) 
     button.setMinimumSize(20,20) 
     button.setMaximumSize(20,20) 
     grid.addWidget(button, *position) 


    self.setGeometry(300,300,300,300) 
    self.setWindowTitle('Title') 
    self.move(300, 150) 
    self.show() 

if __name__ == '__main__': 

    app = QApplication(sys.argv) 
    ex = Saper() 
    sys.exit(app.exec_()) 

答えて

0

[OK]を、私はそれを得ました。誰かがこの問題を抱えているなら、解決策があります。私は、QWidgetからクラスのSaper固有の概念を変更しましたが、テーブル名には名前の付いた小さなタブが含まれています。最初は大きなテーブルの要素をカウントし、2番目の要素は小さいタブの要素をカウントします。 1つの水平ボックスに各要素を追加してから、この水平ボックスを垂直ボックスに追加して、各行に対してこの操作を繰り返します。重要なことは、垂直ボックスに古いものを追加した後、新たな水平方向のボックスを作ることです。

import sys 
from PyQt5.QtCore import pyqtSignal, QObject 
from PyQt5.QtWidgets import (QWidget, QPushButton, 
QHBoxLayout, QVBoxLayout, QApplication) 



class Saper(QWidget): 

    def __init__(self): 
     super().__init__() 
     self.initUI() 

    def initUI(self): 

     vbox = QVBoxLayout() 
     vbox.setSpacing(0) 
     vbox.addStretch(1) 


     names = [['Cls', 'Bck', 'Ok', 'Close'], 
       ['7', '8', '9', '/'], 
       ['4', '5', '6', '*'], 
       ['1', '2', '3', '-'], 
       ['0', '.', '=', '+'], 
       ['f','i','f','i']] 


     for pos in names: 
      hbox = QHBoxLayout() 
      hbox.addStretch(1) 
      hbox.setSpacing(0) 
      for name in pos: 

       button = QPushButton(name) 
       button.setMinimumSize(75,60) 
       button.setMaximumSize(75,60) 
       hbox.addWidget(button) 
      vbox.addLayout(hbox) 

     self.setLayout(vbox) 
     self.setGeometry(300,300,300,300) 
     self.setWindowTitle('Title') 
     self.move(300, 150) 
     self.show() 

if __name__ == '__main__': 

    app = QApplication(sys.argv) 
    ex = Saper() 
    sys.exit(app.exec_()) 
+0

他の人が理解できるように、あなたはあなたのソリューションの簡単な説明を与えることができます。 – eyllanesc

+0

QWidgetからクラスのSaper固有の概念を変更しましたが、今やテーブル名には小さな名前のタブが含まれています。最初は大きなテーブルの要素をカウントし、2番目の要素は小さいタブの要素をカウントします。 1つの水平ボックスに各要素を追加してから、この水平ボックスを垂直ボックスに追加して、各行に対してこの操作を繰り返します。重要なのは、縦のボックスに古いものを追加した後、新しい横のボックスを作ることです。 –

+0

あなたの答えを[編集](https://stackoverflow.com/posts/44945631/edit)し、この情報を追加してください。 – eyllanesc

関連する問題