私はKivyでメールアプリケーションを開発しようとしています。基本的には、フレームワークのインとアウトを学ぶための演習と同じです...最初のウィンドウを作成しようとしていますが、少しつまずきました。アイデアは、モバイルデバイス上の基本的なメールアプリと同じように、受信トレイにメールのリストを表示するだけであるということです。
私が抱えている問題は、各リスト項目のテキスト(単なるボタン)を正しく整列させる方法がわからないことです。ボタンで「halign='left'」を使用すると、テキストは左揃えになりますが、各ボタンに対してのみ相対的です。それでも各ボタンの中央に配置されます。
私の実際のアプリは投稿するのに少し大きいので、これは私がストックのKivyの例から作成した簡単で汚い例です。(このコードは完璧ではないことに気づきました...例のためにすばやく汚いと言ったように...それでも機能します!)ご覧のとおり、各ボタンの2行のテキストは互いに整列していますがそれらはすべて全体的に整列しているわけではありません。すべてのテキストを各ボタンの左から10pxに揃えるために、私が何をするかを誰かが提案できますか?StackOverflowで相対的なサウンドのアイテムを1つ見つけましたが、実際には質問に答えられませんでした。たとえば、ボタンの画像を使用する方が扱いやすいようでした。私はKivyを初めて使用しますが、チュートリアルとドキュメントを読み、Googleを広範囲に検索したので、助けていただければ幸いです。
import kivy
kivy.require('1.0.8')
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout
import random
class ScrollViewApp(App):
def build(self):
# create a default grid layout with custom width/height
layout = GridLayout(cols=1, spacing=10, size_hint=(None, None),
width=Window.width)
# when we add children to the grid layout, its size doesn't change at
# all. we need to ensure that the height will be the minimum required to
# contain all the childs. (otherwise, we'll child outside the bounding
# box of the childs)
layout.bind(minimum_height=layout.setter('height'))
# add button into that grid
for i in range(30):
btn = Button(text=str(i * random.random()) + '\n' + str(i * random.random()),
size=(300, 40),
size_hint=(None, None),
halign='left')
layout.add_widget(btn)
# create a scroll view, with a size < size of the grid
root = ScrollView(size_hint=(None, None))
root.size = (Window.width, Window.height)
root.center = Window.center
root.add_widget(layout)
return root
if __name__ == '__main__':
ScrollViewApp().run()