PyQt5的学习之路(七)

复选框

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox
from PyQt5.QtCore import Qt


class Myform(QWidget):

    def __init__(self):

        super(Myform, self).__init__()

        self.initUI()

    def initUI(self):

        cb = QCheckBox('show title', self)
        cb.move(20, 20)
        cb.toggle()    # 切换默认状态为选中

        # 当进行如下设置时,state会有三个值(0,1,2)
        # cb.setCheckState(1)

        cb.stateChanged.connect(self.changeTitle)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('checkbox')
        self.show()

    # stateChanged信号会传入一个状态参数(默认0和2)
    def changeTitle(self, state):

        # print state

        if state == Qt.Checked:
           self.setWindowTitle('checkbox')
        else:
           self.setWindowTitle('')

if __name__ == '__main__':

    app = QApplication(sys.argv)
    w = Myform()
    sys.exit(app.exec_())

切换按钮

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFrame
from PyQt5.QtGui import QColor


class Myform(QWidget):

    def __init__(self):

        super(Myform, self).__init__()

        self.initUI()

    def initUI(self):

        self.col = QColor(0, 0, 0)

        redb = QPushButton('Red', self)
        redb.setCheckable(True)
        redb.move(10, 10)
        # 这是一个独立的事件, 点击传递一个bool值并触发事件
        redb.clicked[bool].connect(self.setColor)

        greenb = QPushButton('Green', self)
        greenb.setCheckable(True)
        greenb.move(10, 60)
        greenb.clicked[bool].connect(self.setColor)

        blueb = QPushButton('Blue', self)
        blueb.setCheckable(True)
        blueb.move(10, 110)
        blueb.clicked[bool].connect(self.setColor)


        self.square = QFrame(self)
        self.square.setGeometry(150, 20, 100, 100)
        self.square.setStyleSheet("QWidget { background-color: %s }" % self.col.name())

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('togglebutton')
        self.show()

    def setColor(self, pressed):

        source = self.sender()   # 事件发送者名

        if pressed:
            val = 255
        else: val = 0

        if source.text() == "Red":
            self.col.setRed(val)
        elif source.text() == "Green":
            self.col.setGreen(val)
        elif source.text() == "Blue":
            self.col.setBlue(val)
        else:
            print "未知错误"

        self.square.setStyleSheet("QFrame { background-color: %s }" % self.col.name())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Myform()
    sys.exit(app.exec_())

滑动条

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

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QSlider, QLabel, QFrame
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor


class Myform(QMainWindow):

    def __init__(self):

        super(Myform, self).__init__()

        self.initUI()

    def initUI(self):

        self.col = QColor(0, 0, 0)

        self.sldr = QSlider(Qt.Horizontal, self)    # 创建一个横置的滑动条
        self.sldr.setFocusPolicy(Qt.NoFocus)
        self.sldr.setGeometry(30, 10, 100, 30)
        self.sldr.valueChanged[int].connect(self.changValue)
        self.sldr.setStatusTip('Red')

        self.lbr = QLabel(self)
        self.lbr.setGeometry(140, 10, 100, 30)


        self.sldg = QSlider(Qt.Horizontal, self)
        self.sldg.setFocusPolicy(Qt.NoFocus)
        self.sldg.setGeometry(30, 60, 100, 30)
        self.sldg.valueChanged[int].connect(self.changValue)
        self.sldg.setStatusTip('Green')

        self.lbg = QLabel(self)
        self.lbg.setGeometry(140, 60, 100, 30)


        self.sldb = QSlider(Qt.Horizontal, self)
        self.sldb.setFocusPolicy(Qt.NoFocus)
        self.sldb.setGeometry(30, 110, 100, 30)
        self.sldb.valueChanged[int].connect(self.changValue)
        self.sldb.setStatusTip('Blue')

        self.lbb = QLabel(self)
        self.lbb.setGeometry(140, 110, 100, 30)


        self.square = QFrame(self)
        self.square.setGeometry(180, 20, 100, 100)
        self.square.setStyleSheet("QFrame { background-color: %s }" % self.col.name())

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('slider')
        self.show()

        self.statusBar()

    def changValue(self, val):

        if self.sender() == self.sldr:
            self.lbr.setText(str(val * 255 / 99))    # 将99刻度转换成255刻度
            self.col.setRed(val * 255/ 99)
        elif self.sender() == self.sldg:
            self.lbg.setText(str(val * 255 / 99))
            self.col.setGreen(val * 255/ 99)
        elif self.sender() == self.sldb:
            self.lbb.setText(str(val * 255 / 99))
            self.col.setBlue(val * 255/ 99)
        else: print "未知错误"

        self.square.setStyleSheet("QFrame { background-color: %s }" % self.col.name())

        self.statusBar().showMessage(self.col.name())   # 当颜色改变将颜色名写到状态栏
        self.square.setStatusTip(self.col.name())




if __name__ == '__main__':

    app = QApplication(sys.argv)
    w = Myform()
    sys.exit(app.exec_())

进度条

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar, QPushButton
from PyQt5.QtCore import QBasicTimer


class Myform(QWidget):

    def __init__(self):

        super(Myform, self).__init__()

        self.initUI()

    def initUI(self):

        # 这是两个自定义的中间变量,后面会用到
        self.finish = 0
        self.beginAgain = 0

        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)

        self.btn = QPushButton('Start', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)

        self.timer = QBasicTimer()
        self.step = 0

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('progressbar')
        self.show()

    def doAction(self):

        source = self.sender()

        # 进度条到100%时触发,点击时将中间变量self.beginAgain置为1
        if self.finish == 1:
            self.timer.start(100, self)
            self.btn.setText('Stop')
            self.beginAgain = 1

        elif self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')

        else:
            self.timer.start(100, self)
            self.btn.setText('Stop')

    def timerEvent(self, e, s = 0):

        if self.step >= 100:

            if self.beginAgain == 0:
                self.timer.stop()
                self.btn.setText('BeginAgain')
                self.finish = 1

            # 进度条到100%并且点击按钮触发
            elif self.beginAgain == 1:
                self.step = 0
                self.beginAgain = 0

        else:
            self.finish = 0

        self.step = self.step + 1
        self.pbar.setValue(self.step)

if __name__ == '__main__':

    app = QApplication(sys.argv)
    w = Myform()
    sys.exit(app.exec_())

日期选择器

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCalendarWidget, QLabel
from PyQt5.QtCore import QDate


class Myform(QWidget):

    def __init__(self):

        super(Myform, self).__init__()

        self.initUI()

    def initUI(self):

        cal = QCalendarWidget(self)
        cal.setGridVisible(True)    # 让日历网格状显示
        cal.move(20, 20)
        cal.clicked[QDate].connect(self.showDate)  # 触发事件并传递参数QDate(选中日期)

        self.lbl = QLabel(self)

        date = cal.selectedDate()   # 显示默认选中的日期
        self.lbl.setText(date.toString())

        self.lbl.move(130, 260)

        self.setGeometry(300, 300, 600, 300)
        self.setWindowTitle("cadenlar")
        self.show()

    def showDate(self, date):

        self.lbl.setText(date.toString())


if __name__ == '__main__':

    app = QApplication(sys.argv)
    w = Myform()
    sys.exit(app.exec_())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值