問題描述
import sqlite3 as lite
from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
Window.size = (600, 325)
class UserGroup(Screen):
def insert_data(self, arg1,arg2):
print(arg1)
print(arg2)
class FactUserGroup(App):
def build(self):
self.root = Builder.load_file('test.kv')
return self.root
if __name__ == '__main__':
FactUserGroup().run()
test.kv
<CustomLabel@Label>:
text_size: self.size
valign: "middle"
padding_x: 5
<SingleLineTextInput@TextInput>:
multiline: False
<GreenButton@Button>:
background_color: 1, 1, 1, 1
size_hint_y: None
height: self.parent.height * 0.120
UserGroup
GridLayout:
cols: 2
padding : 30,30
spacing: 20, 20
row_default_height: '30dp'
Label:
text: 'Male'
text_size: self.size
valign: 'middle'
CheckBox:
group: 'check'
id : chk
Label:
text: 'Female'
text_size: self.size
valign: 'middle'
CheckBox:
group: 'check'
CustomLabel:
text: 'age'
text_size: self.size
valign: 'middle'
SingleLineTextInput:
id: age
GreenButton:
text: 'Ok'
on_press: root.insert_data(chk.text,age.text)
GreenButton:
text: 'Cancel'
on_press: app.stop()
如何獲取復選框的值?我正在使用 age.text 獲取年齡文本框的值,但我不知道復選框的值?
單擊確定"時,如何獲取選中的復選框值并傳入 root.insert_data.
How to get value of checkbox?I am getting value of age textbox using age.text but checkbox value i don't know?
When click on 'Ok' then How to get selected checkbox value and pass in root.insert_data.
推薦答案
您可以通過其 active
屬性來獲取復選框的選中狀態,因此請嘗試更改:
You can get the checked state of a checkbox with its active
property, so try change:
GreenButton:
text: 'Ok'
on_press: root.insert_data(chk.active ,age.text)
在此代碼段中,chk.text
已更改為 chk.active
,這對我很有效.
In this snippet chk.text
was changed to chk.active
which works for me properly.
在 https://kivy.org/docs 查看更多關于 kivy 復選框的參考資料/api-kivy.uix.checkbox.html
希望對您有所幫助.試試看吧.
Hope it helps. Give it a try.
因此,為了能夠獲取每個復選框的屬性和文本輸入,您可以將 ObjectProperties
分配給小部件,并且可以將它們鏈接到您的 test.py代碼>文件.
So in order to be able to get the properties of each checkbox and the text input you can assign ObjectProperties
to the widgets, and you can link them to your test.py
file.
修改后的來源:
from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.properties import ObjectProperty
Window.size = (600, 325)
class UserGroup(Screen):
male = ObjectProperty(None)
female = ObjectProperty(None)
age = ObjectProperty(None)
def insert_data(self):
if self.male.active:
print('Male')
elif self.female.active:
print('Female')
else:
print('No gender selected')
print(self.age.text)
class FactUserGroup(App):
def build(self):
self.root = Builder.load_file('test.kv')
return self.root
if __name__ == '__main__':
FactUserGroup().run()
在 .py
文件中,您可以找到 ObjectProperty
的新導入.您還可以看到,在 UserGroup
中定義了三個新屬性來與視圖交互,并且在 UserGroup.insert_data
中的修改非常簡單.
In the .py
file you can find a new import of ObjectProperty
.
Also you can see that three new properties were defined in UserGroup
to interact with the view, and the modifications in UserGroup.insert_data
are straightforward.
<CustomLabel@Label>:
text_size: self.size
valign: "middle"
padding_x: 5
<SingleLineTextInput@TextInput>:
multiline: False
<GreenButton@Button>:
background_color: 1, 1, 1, 1
size_hint_y: None
height: self.parent.height * 0.120
UserGroup
male: chk_male
female: chk_female
age: txt_age
GridLayout:
cols: 2
padding : 30,30
spacing: 20, 20
row_default_height: '30dp'
Label:
text: 'Male'
text_size: self.size
valign: 'middle'
CheckBox:
group: 'check'
id : chk_male
Label:
text: 'Female'
text_size: self.size
valign: 'middle'
CheckBox:
group: 'check'
id: chk_female
CustomLabel:
text: 'age'
text_size: self.size
valign: 'middle'
SingleLineTextInput:
id: txt_age
GreenButton:
text: 'Ok'
on_press: root.insert_data()
GreenButton:
text: 'Cancel'
on_press: app.stop()
在 .kv
文件中,兩個復選框的 id 和文本輸入被重命名為 chk_male
、chk_female
和 txt_age
分別.
In the .kv
file the ids of the two checkboxes and the text input are renamed to chk_male
, chk_female
and txt_age
respectively.
您還可以看到,對象屬性鏈接是在 UserGroup
部分的開頭定義的.
Also you can see that the object property links are defined at the beginning of the UserGroup
section.
希望它有意義并符合您的要求.
Hope it makes sense and match your requirements.
這篇關于獲取kivy中選中復選框的值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!