Я создал два флажка в файле .KV (один для настроек по умолчанию и один для пользовательских ключевых слов), и я пытаюсь установить флажок по умолчанию, когда GUI открывает это окно изначально. Я могу получить вывод значения по умолчанию, чтобы быть установленным правильно, однако я не могу получить фактический флажок, чтобы визуально показать, что он выбран, когда окно первоначально отображается.
Цель этой программы состоит в том, чтобы сделать пользовательский интерфейс basi c graphi c для существующего программного обеспечения для моделирования, которое моя лаборатория создала и завершило ранее.
Я довольно новичок в Kivy, поэтому я не уверен, что я делаю что-то в корне неправильно или если Я просто не понимаю, как флажки работают правильно.
Я пробовал оба метода, которые я видел в других связанных постах
defaultCheckbox = BooleanProperty(True) #in .py file
, и я пробовал добавление
active: True # in the .kv file
Вот часть флажка файла .kv
Секция сбора была реплицирована из другого сообщения stackoverflow, где поле за флажком не показывалось вверх, когда страница отображается, и поэтому решение было нарисовать ее вручную.
FloatLayout:
BoxLayout:
orientation: "horizontal"
height: 20
pos_hint: {'center': (0.5, 0.7)}
FloatLayout:
Label:
text: "Default \n Keywords"
size_hint_x: 1
halign: 'center'
pos_hint: {'center': (0.2, 0.5)}
font_size: 30
#todo make default kwargs checkbox active on program boot
CheckBox:
id: defaultCheckbox
canvas.before:
Color:
rgb: 30,35,38
Ellipse:
pos:self.center_x-11, self.center_y-11
size:[22,22]
Color:
rgb: 0,0,0
Ellipse:
pos:self.center_x-10, self.center_y-10
size:[20,20]
on_active: root.default_click(self, self.active)
size_hint_x: .20
group: "keywords"
Label:
text: " "
valign: 'bottom'
FloatLayout:
Label:
text: "Define \n Experiment \n Keywords"
size_hint_x: 1
halign: 'center'
pos_hint: {'center': (0.15, 0.5)}
font_size: 25
CheckBox:
canvas.before:
Color:
rgb: 30,35,38
Ellipse:
pos:self.center_x-11, self.center_y-11
size:[22,22]
Color:
rgb: 0,0,0
Ellipse:
pos:self.center_x-10, self.center_y-10
size:[20,20]
on_active: root.custom_click(self, self.active)
size_hint_x: .20
group: "keywords"
и вот соответствующая часть файла .py
class PhysicsModeling(Screen):
kwargPopup = ObjectProperty(None)
physicsModel = ObjectProperty(None)
initialConditions = ObjectProperty(None)
default = ObjectProperty(True)
defaultExpKwargs = {'G0' : 1., 'G1' : .1, 'G2': 1., 'MU':1., 'scaling' : 25, "solution1" : 1,"solution2" : 3, "orientation2" : "x", "y_shift2" : 1./4.}
customExpKwargs = ObjectProperty(None)
defaultCheckbox = BooleanProperty(True)
def physicsmodel_spinner_clicked(self, value):
print("Physics Model selected is " + value)
def initialconditions_spinner_clicked(self, value):
print("Intial Conditions " + value + " Selected")
def default_click(self, instance, value):
if value is True:
PhysicsModeling.default = True
print("Checkbox Checked")
else:
PhysicsModeling.default = False
print("Checkbox Unchecked")
def custom_click(self, instance, value):
#todo add popup window for custom kwargs
if value is True:
PhysicsModeling.default = False
print("Checkbox Checked")
PhysicsModeling.default = True
popup = Popup(title='Define Keyword Arguments', content=Label(text='Test Popup'),
auto_dismiss=True, size_hint=(0.5,0.5), pos_hint={'x': 0.25,
'y':0.25})
popup.open()
else:
print("Checkbox Unchecked")
def next_button(self):
outputArray[11] = self.physicsModel.text
outputArray[10] = self.initialConditions.text
print("NEXT button pressed!!")
print("Batches Selected ", self.physicsModel.text)
print("Run Solutions ", self.initialConditions.text)
if self.default == True:
outputArray[12] = self.defaultExpKwargs
print("Default KWargs Selected")
else:
print("Custom KWargs are DEFINED")
outputArray[12] = self.customExpKwargs