Ich habe eine einfache Tabelle App, die ich mit Pyinstaller für os x verpackt. Wenn ich main.py
ausführen, zeigt das Widget richtig:Verpackt Kivy App visuell falsch
Nach dem Verpacken der App nach dem docs und öffnen Sie die .app
die Dimensionierung der Etiketten etc. sind durcheinander. In der Tat, wenn es andere Widgets gäbe, wären auch diese nicht richtig dimensioniert.
Gibt es ein Problem mit meinem kv
oder Code in der Regel, dass dies vielleicht verursacht? Ich habe eine große App, die ich seit einer Woche zu verpacken versuche, und ich habe die Dinge bis zu diesem letzten Punkt durchgezogen.
Weitere Informationen: Ich bin auf Mac Yosemite. Ich kann Protokolle bei Bedarf bereitstellen, aber ich sehe keine Fehler in ihnen.
Hier main.py
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.scrollview import ScrollView
from kivy.properties import BooleanProperty, ObjectProperty
from kivy.lang import Builder
kv = """
<Cell>:
size_hint: (None, None)
width: 400
height: 60
canvas.before:
Color:
rgba: [0.23, 0.23, 0.23, 1] if self.is_even else [0.2, 0.2, 0.2, 1]
Rectangle:
pos: self.pos
size: self.size
<Table>:
grid: grid
bar_width: 25
scroll_type: ['bars', 'content']
bar_color: [0.4, 0.7, 0.9, 1]
bar_inactive_color: [0.2, 0.7, 0.9, .5]
do_scroll_x: True
do_scroll_y: True
GridLayout:
id: grid
cols: 15
rows: 30
size_hint: (None, None)
width: self.minimum_width
height: self.minimum_height
"""
Builder.load_string(kv)
class Cell(Label):
is_even = BooleanProperty(None)
class Table(ScrollView):
grid = ObjectProperty(None)
def __init__(self, *args, **kwargs):
super(Table, self).__init__(*args, **kwargs)
for i in range(30):
for j in range(15):
text = "data row: {}, column: {}".format(i, j)
self.grid.add_widget(Cell(text=text, is_even=i % 2 is 0))
class TestApp(App):
def build(self):
return Table()
if __name__ == '__main__':
TestApp().run()
Vielleicht müssen Sie DP oder SP mit Ihren Größen verwenden. Siehe https://kivy.org/docs/api-kivy.metrics.html – frmdstryr
Vielen Dank! Ich denke, das war das Problem. Mach eine Antwort und ich werde es markieren, wenn du möchtest. – Mox