質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Kivy

Kivyは、Pythonを用いたNUI開発のためのオープンソースフレームワーク。マルチタッチなど多くの入力に対応したNUIアプリなどを開発することができます。多くの環境で動作するクロスプラットフォームです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1259閲覧

KivyのRecycleViewに組み込んだCheckBoxを全選択する方法

ulthar

総合スコア8

Kivy

Kivyは、Pythonを用いたNUI開発のためのオープンソースフレームワーク。マルチタッチなど多くの入力に対応したNUIアプリなどを開発することができます。多くの環境で動作するクロスプラットフォームです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/01 01:27

Python3とKivyで簡単なアプリを作っています。
RecycleViewのviewclassに組み込んだCheckBoxを選択する際に別で全選択が可能になるボタンを配置したいです。しかしこの場合、全選択を行う関数をviewclass内に作れないため、viewclass外からCheckBoxのactiveを制御する必要があり、どのようにすればそれが可能になるのかがわかりません。
以下に簡略化したコードを記載します。

py

1from kivy.app import App 2from kivy.uix.boxlayout import BoxLayout 3from kivy.uix.recycleview import RecycleView 4from kivy.properties import ObjectProperty 5 6class TestStart(BoxLayout): 7 checklist=ObjectProperty() 8 def on_kv_post(self, base_widget): 9 for i in range(5): 10 self.checklist.data.append({"name":str(i)}) 11 def allselect(self): 12 pass 13 14class CheckList(BoxLayout): 15 name=ObjectProperty() 16 17class TestCheck(App): 18 def __init__(self, **kwargs): 19 super(TestCheck,self).__init__(**kwargs) 20 21if __name__ == "__main__": 22 TestCheck().run()

kv

1TestStart 2<TestStart> 3 checklist:checklist 4 BoxLayout: 5 canvas.before: 6 Color: 7 rgb:255,255,255 8 Rectangle: 9 size: self.size 10 orientation:"vertical" 11 Button: 12 size_hint_y:.1 13 text:"allselect" 14 on_press: root.allselect() 15 RecycleView: 16 size_hint_y:.9 17 viewclass: "CheckList" 18 id: checklist 19 RecycleBoxLayout: 20 orientation: "vertical" 21 default_size_hint: 1,None 22 default_size: None,dp(30) 23 size_hint_y: None 24 height: self.minimum_height 25 spacing: 5 26 padding: 10 27 28<CheckList> 29 name:"" 30 CheckBox: 31 32 Label: 33 text:root.name 34 color: 0,0,0

0から4までのリストが生成され、それぞれにチェックボックスがついています。allselectボタンを押すことでチェックボックスが全てTrueになるようにしたいです。
ご助力お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

BooleanProperty を導入して、

python

1class CheckList(BoxLayout): 2 name = ObjectProperty() 3 checked = BooleanProperty()

チェックボックスの選択状態は、プロパティを参照するようにし

CheckBox: active: root.checked

allselect() で、選択状態を全て True に更新

python

1 def allselect(self): 2 self.checklist.data = [ 3 {**item, "checked":True} for item in self.checklist.data 4 ]

関連

追加の作業で、チェックボタンのクリック時にプロパティを更新する必要があります。関連先参照。

投稿2021/06/04 08:52

teamikl

総合スコア8664

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ulthar

2021/06/08 05:22

返信が遅れて申し訳ありません。 ご提示の手法で無事にチェックボックスの状態を更新することができました。 RecycleViewのdataの中身をviewclassから参照するというのは実際に使っているのですが、なかなか応用まで行けないですね。これからも精進します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問