- 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」で実行)

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