Maison  >  Article  >  développement back-end  >  PyQt5 doit apprendre le bouton de commutation tous les jours_python

PyQt5 doit apprendre le bouton de commutation tous les jours_python

不言
不言original
2018-04-20 14:14:432898parcourir

Cet article présente principalement en détail les informations pertinentes sur le bouton de commutation que vous devez apprendre chaque jour dans PyQt5. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

Le bouton de commutation est une fonctionnalité spéciale. du modèle QPushButton. C'est un bouton à deux états : enfoncé et non enfoncé. Nous modifions d'autres contenus en basculant entre ces deux états.


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

"""
PyQt5 教程

在这个例子中,我们创建三个切换按钮。
他们将控制一个QFrame的背景颜色。

作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年8月3日
"""

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

class Example(QWidget):

  def __init__(self):
    super().__init__()

    self.initUI()

  def initUI(self):

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

    redb = QPushButton('红', self)
    redb.setCheckable(True)
    redb.move(10, 10)

    greenb = QPushButton('绿', self)
    greenb.setCheckable(True)
    greenb.move(10, 60)

    blueb = QPushButton('蓝', self)
    blueb.setCheckable(True)
    blueb.move(10, 110)

    redb.clicked[bool].connect(self.setColor)
    greenb.clicked[bool].connect(self.setColor)
    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, 280, 170)
    self.setWindowTitle('切换按钮')    
    self.show()

  def setColor(self, pressed):

    source = self.sender()

    if pressed:
      val = 255
    else:
      val = 0

    if source.text() == '红':
      self.col.setRed(val)
    elif source.text() == '绿':
      self.col.setGreen(val)
    else:
      self.col.setBlue(val)

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

if __name__ == '__main__':

  app = QApplication(sys.argv)
  ex = Example()
  sys.exit(app.exec_())

Dans notre exemple, nous avons créé trois boutons bascule et un QWidget. Nous définissons la couleur d'arrière-plan du QWidget sur noir. Le bouton bascule fera basculer les parties rouge, verte et bleue de la valeur de couleur. La couleur d'arrière-plan dépendra de la bascule.

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

La valeur de couleur initiale est le noir.

redb = QPushButton('红', self)
redb.setCheckable(True)
 redb.move(10, 10)

Créez un bouton bascule. Nous créons un bouton en utilisant QPushButton et définissons sa méthode setCheckable() sur true.

redb.clicked[bool].connect(self.setColor)

Lorsque nous cliquons sur le bouton bascule, un signal est connecté à la méthode que nous avons définie. Nous exploitons le signal de clic en utilisant une valeur booléenne.

 source = self.sender()

Nous obtenons les informations sur le bouton bascule (c'est-à-dire sur quel bouton a été cliqué).

if source.text() == '红':
      self.col.setRed(val)

S'il s'agit d'un bouton rouge, nous mettons à jour la partie rouge de la couleur en conséquence.

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

Nous utilisons une feuille de style pour changer la couleur de fond.

Une fois le programme exécuté

PyQt5 doit apprendre le bouton de commutation tous les jours_pythonPyQt5 doit apprendre le bouton de commutation tous les jours_python

Recommandations associées :

Gestion de la mise en page PyQt5 que vous devez apprendre tous les jours

Cocher les cases avec les étiquettes que vous devez apprendre tous les jours dans PyQt5

Créer des effets de centrage de fenêtre que vous devez apprendre tous les jours dans PyQt5

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn