上篇把開頭都處理的差不多了,這篇開始要寫完整個APP,其中滾動的布局處理是花最多時間的,原因有兩個 :
1.
布局不管是GridLayout還是BoxLayout,都是單一方向,GridLayout是網格狀,方向無法控制,只能依照一開始定義多少的cols與rows去排列。
2. BoxLayout則是僅能設定直式或是橫式,第一行的格式大小方式,在第二行時無法使用變更,會產生錯誤或是全部不見,所以遇到下面的圖形排列時,就會無法處理,這部分若是使用kv file可以很方便的解決,網路上的資訊幾乎都是以kv file形式解決,但小雷一開始就打算完全使用Python,所以也花了不少時間去研究。
最後解決的辦法就是創造一個主要的GridLayout以及好幾個橫式的BoxLayout,分別把各個函式套用進去之後再添加回主要的布局之中,總算是不會衝突並且可以正常執行
# 建立滾動處
def create_scrollview(self):
self.layout = GridLayout(cols=1, size_hint_y=None)
self.layout.bind(minimum_height=self.layout.setter("height"))
# 橫向布局_0
self.hori = BoxLayout(orientation="horizontal", size_hint_y=None)
# 橫向布局_1
self.one_hori = BoxLayout(orientation="horizontal", size_hint_y=None)
# 橫向布局_2
self.two_hori = BoxLayout(orientation="horizontal", size_hint_y=None)
接著處理要顯示的按鈕、標籤與輸入框,按照每一行對應的Layout進行添加
# boxlayout
self.one_button = MyButton(
self.two_button = MyButton(
self.three_button = MyButton(
self.four_button = MyButton(
滾動到尾部時可以添加一些空白的Label,防止手機鍵盤彈出時不好打字,對於滾動的順暢度也會比較好
# 增加的空格
for i in range(10):
self.layout.add_widget(self.test)
把滾動的函式添加回主要的Layout與要滾動的範圍
# 導入滾動函式
scrollview = ScrollView(size=(Window.width,
Window.height))
self.window.add_widget(scrollview)
最後將所有的計算公式與回傳值編寫進函式,要顯示的文字編寫好與準備測試
# boxlayout
self.one_button = MyButton(
self.two_button = MyButton(
這邊需要注意幾件事情 :
1. 按鈕按下去之後,並不是依照按鈕上的文字去做傳輸,以one_button為例,雖然設定的文字是A方案,但實際列印出來的卻不是文字,所以輸出的時候要注意型態是否有正確
self.one_button = MyButton(
print(self.one_button)
print(self.one.button.text)
2. 再來就是數字計算完成之後,要輸出到Label時需要轉換為字符chr,否則會產生錯誤,Label只接受字符
self.referral = 20 / 100
3. 最後就是當按鈕或是文字沒有輸入時,APP會閃退,所以函式中可以善用try..except去檢測錯誤並給予回傳的值。
# 獎金A判斷
try:
except:
到這邊已經APP本體已經完成了,剩下的就是打包成.apk並傳送到手機安裝進行測試啦!
沒有留言:
張貼留言