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