Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt:QGridLayout中的设置空间_Python_User Interface_Python 3.5_Pyqt5_Qgridlayout - Fatal编程技术网

Python PyQt:QGridLayout中的设置空间

Python PyQt:QGridLayout中的设置空间,python,user-interface,python-3.5,pyqt5,qgridlayout,Python,User Interface,Python 3.5,Pyqt5,Qgridlayout,你能告诉我如何在我的小部件中删除按钮之间的空格吗?我想通过设置命令,setspace(0)来完成,但我不知道应该在哪里设置它 我的代码: import sys from PyQt5.QtCore import pyqtSignal, QObject from PyQt5.QtWidgets import QMainWindow, QApplication, QGridLayout, QPushButton,QWidget class Saper(QWidget): def __i

你能告诉我如何在我的小部件中删除按钮之间的空格吗?我想通过设置命令,
setspace(0)
来完成,但我不知道应该在哪里设置它

我的代码:

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

好的,我知道了。如果有人会有这个问题,这里有一个解决方案。我改变了我的概念,类Saper继承了QWidget,现在表名包含了带有名称的较小选项卡。第一个用于统计大表中的元素,第二个用于统计较小选项卡中的元素。我将每个元素添加到一个水平框,然后将这个水平框添加到垂直框,我对每一行重复这个操作。重要的是在将旧的水平框添加到垂直框后制作新的水平框:

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

好的,我知道了。如果有人会有这个问题,这里有一个解决方案。我改变了我的概念,类Saper继承了QWidget,现在表名包含了带有名称的较小选项卡。第一个用于统计大表中的元素,第二个用于统计较小选项卡中的元素。我将每个元素添加到一个水平框,然后将这个水平框添加到垂直框,我对每一行重复这个操作。重要的是在将旧的水平框添加到垂直框后制作新的水平框:

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

你可以对你的解决方案做一个简单的解释,这样其他人就可以理解了。我改变了我的概念,从QWidget中继承了类Saper,现在表名包含了带有名称的较小选项卡。第一个用于统计大表中的元素,第二个用于统计较小选项卡中的元素。我将每个元素添加到一个水平框,然后将这个水平框添加到垂直框,我对每一行重复这个操作。重要的是在将旧的水平框添加到垂直框后再制作新的水平框。请给出您的答案并添加此信息。您可以简要解释您的解决方案,以便其他人能够理解。我改变了我的概念,从QWidget中继承了类Saper,现在表名包含带有名称的较小选项卡。第一个用于统计大表中的元素,第二个用于统计较小选项卡中的元素。我将每个元素添加到一个水平框,然后将这个水平框添加到垂直框,我对每一行重复这个操作。重要的是在将旧的水平框添加到垂直框后再制作新的水平框。请回答并添加此信息。