2016-03-30 9 views
1

Ich bin ziemlich sicher, dass ich über gegangen Bildschirm-Skalierung falsch, aber mein Ansatz ist wie folgt:Kivy size_hint (Popup) dezimal Fehler

Ich habe ein Popup, das Informationen anzeigt, deren Höhe kann sich ändern, abhängig von der Anzahl der dem Benutzer präsentierten Zeilen. Da ich ungefähr die Höhe in Pixeln pro Zeile kenne (aufgrund der Tatsache, dass ich die Schriftgröße kenne), habe ich i gezählt, wobei ich die \n in der präsentierten Nachricht zähle. Ich habe das dann durch die Window.height geteilt, um mir einen Prozentsatz des Bildschirms zu geben, der erforderlich ist, um die Information richtig anzuzeigen.

Ich weiß, dass diese Information korrekt angezeigt wird, wenn ich den Wert fest codiere, der aus der folgenden Gleichung resultiert; Aber

TwoDecPoints = Decimal(10) ** -2 
    popupScale = (Decimal(i)/Decimal(Window.height)).quantize(TwoDecPoints) 

wenn ich gelten die popupScale (nn.nn) auf die popup ‚s size_hint;

InformationScreen.ResultsPopup.size_hint = 0.95, popupScale 

Ich erhalte diesen Fehler;

Popup.size_hint_y have an invalid format (got Decimal('0.25')) 

Diese entzieht sich mir, weil ich eine 2 Dezimalzahl haben, 0.95, die es nie beschwert. Ich habe versucht, es als eine Schnur zu verwenden;

InformationScreen.ResultsPopup.size_hint = 0.95, str(popupScale) 

Neben den ursprünglichen popupScale ohne quantize verwenden, und die Anzahl Trimmen;

popupScale = (Decimal(i)/Decimal(Window.height)) 
    InformationScreen.ResultsPopup.size_hint = 0.95, str(popupScale)[:4] 

Keine von denen funktioniert.

Ich habe die Dokumentation über size_hint gelesen, konnte aber keine relevanten Informationen zu dem Datentyp finden, der size_hint erfordert. Jede Hilfe würde sehr geschätzt werden. Danke

Antwort

3

size_hint ist ein ReferenceListProperty, ein Tupel von size_hint_x und size_hint_y. size_hint_x (bzw. size_hint_y) ist ein NumericProperty es dauert ein float oder ein int. Also sollte float(popupScale) es tun.

Edit: Wenn das nicht geholfen hat, wird die genaue Ausnahme in dieser line

ausgelöst