Python - グラフィックス - PyQt5 - ボタン

 クラウディア
1. 概要
2. ボタン
3. 表示

1. 概要

 ボタンを扱ってみたかったのです。  本ページは、下記のサイトを参考にさせていただきました。
【PythonでGUI】PyQt5 -ウィジェット- #Python3

2. ボタン

 参考サイトのソースを元に(あんま、変えていませんが)下記のソースを書きました。

import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QFrame, QApplication)
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('Red', self)
    redb.setCheckable(True)
    redb.move(10, 10)

    # クリックされたらsetColor関数の呼び出し
    redb.clicked[bool].connect(self.setColor)

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

    redb.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(500, 300, 640, 360)
    self.setWindowTitle('Toggle button')
    self.show()

  def setColor(self, pressed):

    # 押されたボタンをsource変数に代入
    source = self.sender()

    # ボタンがクリックされたら、色を設定
    if pressed:
        val = 255
    else: val = 0

    # Redボタンが押されたら、色に赤を混ぜる
    if source.text() == "Red":
        self.col.setRed(val)

    # Greenボタンが押されたら、色に緑を混ぜる
    elif source.text() == "Green":
        self.col.setGreen(val)

    # Blueボタンが押されたら、色に青を混ぜる
    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_())

3. 表示

 実行すると、下記のような表示になります。  (「Linux Mint 22 Cinammon」で実行)
「PyQt5」-「ボタン表示」「起動直後」

 「Red」を押すと、枠内の背景が赤に変わります。

「PyQt5」-「ボタン表示」「赤」

 上図の状態のまま、「Blue」を押すと、枠内の背景は、赤と青を混ぜた色に変わります。

「PyQt5」-「ボタン表示」「赤」「青」

 まぁ、面白い。

AbemaTV 無料体験