Pyqt-qcheckbox-widget

提供:Dev Guides
移動先:案内検索

PyQt-QCheckBoxウィジェット

*QCheckBox* オブジェクトが親ウィンドウに追加されると、テキストラベルの前に長方形のボックスが表示されます。 QRadioButtonと同様に、選択可能なボタンでもあります。 その一般的な使用法は、ユーザーが1つ以上の利用可能なオプションを選択するように求められるシナリオです。

ラジオボタンとは異なり、チェックボックスはデフォルトでは相互に排他的ではありません。 選択を使用可能な項目の1つに制限するには、チェックボックスをQButtonGroupに追加する必要があります。

次の表は、一般的に使用されるQCheckBoxクラスメソッドの一覧です-

Sr.No. Methods & Description
1

setChecked()

チェックボックスボタンの状態を変更します

2

setText()

ボタンに関連付けられたラベルを設定します

3

text()

ボタンのキャプションを取得します

4

isChecked()

ボタンが選択されているかどうかを確認します

5

setTriState()

チェックボックスに変更状態を提供しません

チェックボックスがチェックまたはクリアされるたびに、オブジェクトはstateChanged()シグナルを発信します。

ここでは、2つのQCheckBoxオブジェクトが水平レイアウトに追加されます。 stateChanged()シグナルはbtnstate()関数に接続されています。 信号のソースオブジェクトは、ラムダを使用して関数に渡されます。

self.b1.stateChanged.connect(lambda:self.btnstate(self.b1))
self.b2.toggled.connect(lambda:self.btnstate(self.b2))

isChecked()関数は、ボタンがチェックされているかどうかを確認するために使用されます。

if b.text() == "Button1":
   if b.isChecked() == True:
      print b.text()+" is selected"
   else:
      print b.text()+" is deselected"

完全なコードは次のとおりです-

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class checkdemo(QWidget):
   def __init__(self, parent = None):
      super(checkdemo, self).__init__(parent)

      layout = QHBoxLayout()
      self.b1 = QCheckBox("Button1")
      self.b1.setChecked(True)
      self.b1.stateChanged.connect(lambda:self.btnstate(self.b1))
      layout.addWidget(self.b1)

      self.b2 = QCheckBox("Button2")
      self.b2.toggled.connect(lambda:self.btnstate(self.b2))

      layout.addWidget(self.b2)
      self.setLayout(layout)
      self.setWindowTitle("checkbox demo")

   def btnstate(self,b):
      if b.text() == "Button1":
         if b.isChecked() == True:
            print b.text()+" is selected"
         else:
            print b.text()+" is deselected"

      if b.text() == "Button2":
         if b.isChecked() == True:
            print b.text()+" is selected"
         else:
            print b.text()+" is deselected"

def main():

   app = QApplication(sys.argv)
   ex = checkdemo()
   ex.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()

前述のように、checkBoxボタンはQButtonGroupオブジェクトに追加することで相互に排他的にできます。

self.bg = QButtonGroup()
self.bg.addButton(self.b1,1)
self.bg.addButton(self.b2,2)

QButtonGroupオブジェクト。ボタンの抽象コンテナーを提供し、視覚的な表現はありません。 buttonCliked()シグナルを発行し、Buttonオブジェクトの参照をスロット関数btngroup()に送信します。

self.bg.buttonClicked[QAbstractButton].connect(self.btngroup)

btngroup()関数は、クリックされたチェックボックスのキャプションを表示します。

def btngroup(self,btn):
   print btn.text()+" is selected"