yu00’s blog

プログラミングに関する備忘録です

QPushButtonクラス

PyQt5入門 PythonでGUI作成 - yu00’s blog

QPushButtonは普通のボタンです.

ボタンの作成

PyQt5.QtWidgets.QPushButton(text, parent=0)

文字がtextのボタンを作成します.

サンプルコード

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

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

実行例

f:id:yu00:20150915181217p:plain

文字の変更

button.setText('my-text')

アイコンの設定

button.setIcon(QIcon('my-icon.png'))

f:id:yu00:20150915181753p:plain

シグナル:ボタンがクリックされた

QAbstractButton.clicked(checked = False)

シグナル:ボタンが押された

QAbstractButton.pressed()

シグナル:ボタンがはなされた

QAbstractButton.released()

シグナル:ボタンがトグルされた

QAbstractButton.toggled(checked)

ckecked:TrueかFalse.チェックされたときTrue

ボタンをトグル式にする

ボタンをクリックしたとき,押しっぱなしの状態になり,
次にクリックしたとき元に戻るようにするには,
setCheckable()を使います.

サンプルコード

ボタンが押された状態のときCheckedと表示し,
はなされた状態のときNot Checkedと表示するプログラムです.

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()
        self.show()
        
    def init_ui(self):
        self.button = QPushButton('button', self)
        # トグル式にする
        self.button.setCheckable(True)
        # シグナル・スロットの設定
        self.button.toggled.connect(self.slot_button_toggled)
    
    def slot_button_toggled(self, checked):
        """ ボタンがトグルされたときのスロット """
        if checked:
            self.button.setText('Checked')
        else:
            self.button.setText('Not Checked')
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWidget()
    sys.exit(app.exec_())

実行例

f:id:yu00:20150915184643p:plain f:id:yu00:20150915184651p:plain