Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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 如何增加QFrame.HLine行分隔符的宽度和与其他按钮的距离?_Python_Qt_Button_Layout_Pyqt5 - Fatal编程技术网

Python 如何增加QFrame.HLine行分隔符的宽度和与其他按钮的距离?

Python 如何增加QFrame.HLine行分隔符的宽度和与其他按钮的距离?,python,qt,button,layout,pyqt5,Python,Qt,Button,Layout,Pyqt5,我得到了一个非常小的QFrame。HLine我倾向于在线程上做: 但是我不知道如何增加它的尺寸,也就是说,使它们之间的间距变大。这是我正在尝试做的Photoshop图像: 我试着设置属性setLineWidth和setMidLineWidth,但不管设置它们的值有多大,线条都不会变大 以下是示例代码: #! /usr/bin/env python # -*- coding: utf-8 -*- import sys import PyQt5 from PyQt5 import QtWid

我得到了一个非常小的
QFrame。HLine
我倾向于在线程上做:

但是我不知道如何增加它的尺寸,也就是说,使它们之间的间距变大。这是我正在尝试做的Photoshop图像:

我试着设置属性
setLineWidth
setMidLineWidth
,但不管设置它们的值有多大,线条都不会变大

以下是示例代码:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import PyQt5

from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QFrame
from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QHBoxLayout
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtWidgets import QVBoxLayout
from PyQt5.QtWidgets import QGridLayout

def main():
    app = QtWidgets.QApplication( sys.argv )
    programWindow = ProgramWindow()

    programWindow.show()
    sys.exit( app.exec_() )

class ProgramWindow(QtWidgets.QMainWindow):

    def __init__(self):
        QtWidgets.QMainWindow.__init__( self )
        self.setup_main_window()
        self.create_input_text()
        self.set_window_layout()

    def setup_main_window(self):
        self.resize( 400, 300  )
        self.centralwidget = QWidget()
        self.setCentralWidget( self.centralwidget )

    def create_input_text(self):
        self.separatorLine = QFrame()
        self.separatorLine.setFrameShape( QFrame.HLine )
        self.separatorLine.setFrameShadow( QFrame.Raised )

        # self.separatorLine.setLineWidth( 150 )
        # self.separatorLine.setMidLineWidth( 150 )

        rect = self.separatorLine.frameRect()
        print( "frameShape: %s" % rect )
        print( "width: %s" % self.separatorLine.width() )
        print( "height: %s" % self.separatorLine.height() )

        self.redoButton = QPushButton( "Redo Operations" )
        self.calculate  = QPushButton( "Compute and Follow" )
        self.open       = QPushButton( "Open File" )
        self.save       = QPushButton( "Save File" )

        self.verticalGridLayout = QGridLayout()
        self.verticalGridLayout.addWidget( self.redoButton    , 1 , 0)
        self.verticalGridLayout.addWidget( self.calculate     , 2 , 0)
        self.verticalGridLayout.addWidget( self.separatorLine , 3 , 0)
        self.verticalGridLayout.addWidget( self.open          , 4 , 0)
        self.verticalGridLayout.addWidget( self.save          , 5 , 0)
        self.verticalGridLayout.setSpacing( 0 )
        self.verticalGridLayout.setAlignment(Qt.AlignTop)

        self.innerLayout = QHBoxLayout()
        self.innerLayout.addLayout( self.verticalGridLayout )

    def set_window_layout(self):
        main_vertical_layout = QVBoxLayout( self.centralwidget )
        main_vertical_layout.addLayout( self.innerLayout )

if __name__ == "__main__":
    main()
QGridLayout.setRowMinimumHeight(行,最小尺寸)

将行的最小高度设置为最小像素大小



谢谢你的帮助!你还知道如何制作股票代码吗?@用户我添加了股票代码:)对不起,我的意思是
更厚
不是
股票代码
。您可以使文本更粗体,而不是分隔线。我尝试使用
self.separatorLine.setLineWidth(150)
,但是
self.separatorLine.setLineWidth(1500)
都不会使它变厚。请注意,边框宽度取决于边框样式,而不仅仅是线宽和中间线宽。例如,NoFrame指定的样式的边框宽度始终为0,而“样式”面板的边框宽度与线宽相等。我更新了代码,而不是调用
self.verticalGridLayout.setRowMinimumHeight(3,40)
,我可以直接在每个新的分隔符上调用
self.separatorLine.setMinimumSize(3,40)
。我不得不这样做,因为当我添加更多新的分隔线时,
setRowMinimumHeight(3,40)
停止工作,不再添加最小空间。
import sys
import PyQt5

from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QFrame
from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QHBoxLayout
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtWidgets import QVBoxLayout
from PyQt5.QtWidgets import QGridLayout

def main():
    app = QtWidgets.QApplication( sys.argv )
    programWindow = ProgramWindow()

    programWindow.show()
    sys.exit( app.exec_() )

class ProgramWindow(QtWidgets.QMainWindow):

    def __init__(self):
        QtWidgets.QMainWindow.__init__( self )
        self.setup_main_window()
        self.create_input_text()
        self.set_window_layout()

    def setup_main_window(self):
        self.resize( 400, 300  )
        self.centralwidget = QWidget()
        self.setCentralWidget( self.centralwidget )

    def create_input_text(self):
        self.separatorLine = QFrame()
        self.separatorLine.setFrameShape( QFrame.HLine )
        self.separatorLine.setFrameShadow( QFrame.Raised )

        # self.separatorLine.setLineWidth( 150 )
        #self.separatorLine.setMidLineWidth( 5 )
        # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHeightForWidth(self.separatorLine.sizePolicy().hasHeightForWidth())
        self.separatorLine.setSizePolicy(sizePolicy)
        self.separatorLine.setStyleSheet("font: 9pt;")
        self.separatorLine.setLineWidth(0)
        self.separatorLine.setMidLineWidth(10)
        # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        

        rect = self.separatorLine.frameRect()
        print( "frameShape: %s" % rect )
        print( "width: %s" % self.separatorLine.width() )
        print( "height: %s" % self.separatorLine.height() )

        self.redoButton = QPushButton( "Redo Operations" )
        self.calculate  = QPushButton( "Compute and Follow" )
        self.open       = QPushButton( "Open File" )
        self.save       = QPushButton( "Save File" )

        self.verticalGridLayout = QGridLayout()
        self.verticalGridLayout.addWidget( self.redoButton    , 1 , 0)
        self.verticalGridLayout.addWidget( self.calculate     , 2 , 0)
        self.verticalGridLayout.addWidget( self.separatorLine , 3 , 0)
        self.verticalGridLayout.addWidget( self.open          , 4 , 0)
        self.verticalGridLayout.addWidget( self.save          , 5 , 0)
        self.verticalGridLayout.setSpacing( 0 )
        self.verticalGridLayout.setRowMinimumHeight(3, 40)               # +++
        self.verticalGridLayout.setAlignment(Qt.AlignTop)

        self.innerLayout = QHBoxLayout()
        self.innerLayout.addLayout( self.verticalGridLayout )

    def set_window_layout(self):
        main_vertical_layout = QVBoxLayout( self.centralwidget )
        main_vertical_layout.addLayout( self.innerLayout )

if __name__ == "__main__":
    main()