PyQt5:布局,pushbutton按钮,radiobutton按钮,lableImage设置图片的基本使用方法

效果图:
pyqt5

导航:

水平布局

网格布局

垂直布局

使用lable设置图片

radiobutton的使用


1水平布局

首先创建了一个QGroupBox,将三个按钮放在这个组件里
self.groupBox = QGroupBox(‘there are some buttons’)

然后创建一个水平布局对象
hboxlayout = QHBoxLayout()

按钮的创建及设置
button1 = QPushButton(‘enter’,self)
button1.setToolTip(‘button1’)
button1.setIconSize(QtCore.QSize(40,25))

将设置好的按钮放入这个水平布局中
hboxlayout.addWidget(button1)

创建多个按钮并执行同样的操作
可以将水平布局对象理解为一个窗口(widget),不过这个窗口是内嵌在主窗口中的.
最后将这个水平布局 hboxlayout 添加到 GroupBox中

    #创建一个包含三个按钮的groupBox组件,并设置这个组件里的元素为水平布局(VBoxLayout)
    def craetLayoyt(self):
        self.groupBox = QGroupBox('there are some buttons')
        hboxlayout = QHBoxLayout()

        button1 = QPushButton('enter',self)
        button1.setToolTip('button1')
        button1.setIconSize(QtCore.QSize(40,25))
        hboxlayout.addWidget(button1)

        button2 = QPushButton('cancle', self)
        button2.setToolTip('button2')
        button2.setIconSize(QtCore.QSize(40, 25))
        hboxlayout.addWidget(button2)

        button3 = QPushButton('back', self)
        button3.setToolTip('button3')
        button3.setIconSize(QtCore.QSize(40, 25))
        hboxlayout.addWidget(button3)

        self.groupBox.setLayout(hboxlayout)

完成上述工作后,需要把你的creatLayout添加到主窗口初始化

    def initWindow(self):
        self.setWindowTitle(self.title)
        self.setWindowIcon(QtGui.QIcon(self.iconname))
        self.setGeometry(self.left,self.top,self.width,self.height)

        self.craetLayoyt()
        self.createGridLayout()
        self.createMylable()
        self.myLableImg()
        self.myradiobutton()
        self.lable = QLabel('hello')#底部显示选中的状态
        
		#主窗口的布局是垂直排列的
        vbox = QVBoxLayout()
        vbox.addWidget(self.groupBox)
        vbox.addWidget(self.groupBox2)
        vbox.addWidget(self.groupBox3)
        vbox.addWidget(self.groupBox4)
        vbox.addWidget(self.groupBox5)
        vbox.addWidget(self.lable)
        self.setLayout(vbox)

2.网格布局

使用方法同水平布局一样
不同的是:将按钮或图片添加到布局中的时候,要设置按钮或图片的位置
gridlayout.addWidget(lableimg1,0,0)
参数0,0表示第一行第一个
如果参数是0.4,表示第一行的第五个位置,中间未指定的就空白留出

    #用lable添加一张图片
    def myLableImg(self):
        self.groupBox4 = QGroupBox('this is a lable contain a img')
        gridlayout = QGridLayout()

        lableimg1 = QLabel(self)
        pixmap = QPixmap('python.png')
        lableimg1.setPixmap(pixmap)
        gridlayout.addWidget(lableimg1,0,0)

        lableimg1 = QLabel(self)
        pixmap = QPixmap('logo.png')
        lableimg1.setPixmap(pixmap)
        gridlayout.addWidget(lableimg1,0,1)

        lableimg1 = QLabel(self)
        pixmap = QPixmap('ball.png')
        lableimg1.setPixmap(pixmap)
        gridlayout.addWidget(lableimg1,1,0)

        lableimg1 = QLabel(self)
        pixmap = QPixmap('qiuyi.png')
        lableimg1.setPixmap(pixmap)
        gridlayout.addWidget(lableimg1,1,1)

        self.groupBox4.setLayout(gridlayout)

3.垂直布局

使用方法同水平布局一样


4.添加图片到lable中

需要导入
import QPixmap

        lableimg1 = QLabel(self)
        pixmap = QPixmap('python.png')
        lableimg1.setPixmap(pixmap)
        gridlayout.addWidget(lableimg1,0,0)

5.源码:

import sys

from PyQt5 import QtGui,QtCore
from PyQt5.QtWidgets import QApplication, QPushButton, QMainWindow, QDialog, QGroupBox, QHBoxLayout, QVBoxLayout, \
    QGridLayout, QLabel, QRadioButton

from PyQt5.QtGui import QPixmap
import time

class window(QDialog):
    def __init__(self):
        super(window,self).__init__()

        self.title = 'pyqt5'
        self.left = 500
        self.top = 200
        self.width = 300
        self.height = 250
        self.iconname = 'python.png'
        self.initWindow()

    def initWindow(self):
        self.setWindowTitle(self.title)
        self.setWindowIcon(QtGui.QIcon(self.iconname))
        self.setGeometry(self.left,self.top,self.width,self.height)

        self.craetLayoyt()
        self.createGridLayout()
        self.createMylable()
        self.myLableImg()
        self.myradiobutton()
        self.lable = QLabel('hello')#底部显示选中的状态

        vbox = QVBoxLayout()
        vbox.addWidget(self.groupBox)
        vbox.addWidget(self.groupBox2)
        vbox.addWidget(self.groupBox3)
        vbox.addWidget(self.groupBox4)
        vbox.addWidget(self.groupBox5)
        vbox.addWidget(self.lable)
        self.setLayout(vbox)


    #创建一个包含三个按钮的groupBox组件,并设置这个组件里的元素为水平布局(VBoxLayout)
    def craetLayoyt(self):
        self.groupBox = QGroupBox('there are some buttons')
        hboxlayout = QHBoxLayout()

        button1 = QPushButton('enter',self)
        button1.setToolTip('button1')
        button1.setIconSize(QtCore.QSize(40,25))
        hboxlayout.addWidget(button1)

        button2 = QPushButton('cancle', self)
        button2.setToolTip('button2')
        button2.setIconSize(QtCore.QSize(40, 25))
        hboxlayout.addWidget(button2)

        button3 = QPushButton('back', self)
        button3.setToolTip('button3')
        button3.setIconSize(QtCore.QSize(40, 25))
        hboxlayout.addWidget(button3)

        self.groupBox.setLayout(hboxlayout)

    #创建包含四个组建的网格布局
    def createGridLayout(self):
        self.groupBox2 = QGroupBox('there are some buttons in a gridLayout')
        gridLayout = QGridLayout()

        button1 = QPushButton('enter',self)
        button1.setToolTip('button1')
        button1.setIconSize(QtCore.QSize(40,25))
        gridLayout.addWidget(button1,0,0)

        button2 = QPushButton('cancle', self)
        button2.setToolTip('button2')
        button2.setIconSize(QtCore.QSize(40, 25))
        gridLayout.addWidget(button2,0,1)

        button3 = QPushButton('back', self)
        button3.setToolTip('button3')
        button3.setIconSize(QtCore.QSize(40, 25))
        gridLayout.addWidget(button3,1,0)

        lable = QLabel('hello world')
        gridLayout.addWidget(lable,1,1)

        self.groupBox2.setLayout(gridLayout)

    #lable的创建,以及lable样式表
    def createMylable(self):
        self.groupBox3 = QGroupBox('there are some lables')
        vboxlayout = QVBoxLayout()

        lable1 = QLabel('today is tuesday')
        vboxlayout.addWidget(lable1)
        lable2 = QLabel('yestaday is tuesday')
        lable2.setFont(QtGui.QFont('Sanserif',20))
        lable2.setStyleSheet('color:red')
        vboxlayout.addWidget(lable2)
        lable3 = QLabel('tommorry is tuesday')
        vboxlayout.addWidget(lable3)

        self.groupBox3.setLayout(vboxlayout)


    #用lable添加一张图片
    def myLableImg(self):
        self.groupBox4 = QGroupBox('this is a lable contain a img')
        gridlayout = QGridLayout()

        lableimg1 = QLabel(self)
        pixmap = QPixmap('python.png')
        lableimg1.setPixmap(pixmap)
        gridlayout.addWidget(lableimg1,0,0)

        lableimg1 = QLabel(self)
        pixmap = QPixmap('logo.png')
        lableimg1.setPixmap(pixmap)
        gridlayout.addWidget(lableimg1,0,1)

        lableimg1 = QLabel(self)
        pixmap = QPixmap('ball.png')
        lableimg1.setPixmap(pixmap)
        gridlayout.addWidget(lableimg1,1,0)

        lableimg1 = QLabel(self)
        pixmap = QPixmap('qiuyi.png')
        lableimg1.setPixmap(pixmap)
        gridlayout.addWidget(lableimg1,1,1)

        self.groupBox4.setLayout(gridlayout)

    #radiobutton的使用

    def myradiobutton(self):
        self.groupBox5 = QGroupBox('there are some radiobuttons in a vboxlayout::which is your favourit programming language')
        self.groupBox5.setStyleSheet('color:red')
        self.groupBox5.setFont(QtGui.QFont('Sanserif',21))

        vboxlayout = QVBoxLayout()

        radiobtn1 = QRadioButton('python')
        radiobtn1.setChecked(True)#默认选中
        radiobtn1.setIcon(QtGui.QIcon('google.png'))
        radiobtn1.setIconSize(QtCore.QSize(25,25))
        radiobtn1.setFont(QtGui.QFont('Sanserif',16))
        radiobtn1.toggled.connect(self.onclickradiobtn)#添加槽
        vboxlayout.addWidget(radiobtn1)

        radiobtn2 = QRadioButton('c++')
        radiobtn2.setIcon(QtGui.QIcon('firefox.png'))
        radiobtn2.setIconSize(QtCore.QSize(25,25))
        radiobtn2.toggled.connect(self.onclickradiobtn)
        vboxlayout.addWidget(radiobtn2)

        radiobtn3 = QRadioButton('java')
        radiobtn3.setIcon(QtGui.QIcon('opera.png'))
        radiobtn3.setIconSize(QtCore.QSize(25,25))
        radiobtn3.toggled.connect(self.onclickradiobtn)
        vboxlayout.addWidget(radiobtn3)

        self.groupBox5.setLayout(vboxlayout)

    #设置radiobutton的点击事件
    def onclickradiobtn(self):
        radioBtn = self.sender()
        if radioBtn.isChecked():
            self.lable.setText('you have selected'+radioBtn.text())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = window()
    window.show()
    app.exit(app.exec_())


里边的图片注意自己替换
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值