我第一次使用 Kivy 开发移动应用程序。我已经取得了一些进展,我希望有一个“主”页面出现在其他任何东西之前。然后用户将按下一个按钮,页面将变为更有用的东西。
目前我得到一个巨大的按钮,当我点击它时没有任何反应......
我是 kivy 的新手,任何帮助都会很棒。
我试图用我“认为”正在发生的事情来评论我的代码。
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.carousel import Carousel
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.graphics import Color
from kivy.app import App
from kivy.graphics.instructions import CanvasBase
CAROUSEL_OUTPUT = [0,1,2,3,4,5,6,7,8,9]
class MyApp(App):
def build(self):
#for starters just show a big button that will call
#showData when clicked.
b = Button(text='Click Me!!!')
self.layout = GridLayout(cols=1,rows=4,spacing=[2,0])
self.layout.add_widget(b)
#i pass the layout thinking that i can it
#not sure what i need to change to make it work
b.bind(on_press=(lambda e=1:self.showData(self.layout)))
return self.layout
def showData(self,layout):
self.Money = []
self.Trip = []
self.Gals = []
#set up the local layout
layout = GridLayout(cols=1,rows=4,spacing=[2,0])
row1 = BoxLayout(orientation='vertical')
row2 = BoxLayout(orientation='vertical')
row3 = BoxLayout(orientation='vertical')
w = self.makeCarousels(6,4,1)
l = Label(text='Please enter the total amount paid.')
row1.add_widget(l)
row1.add_widget(w)
layout.add_widget(row1)
w = self.makeCarousels(7,3,2)
l = Label(text='Please enter the total amount of gallons of gasoline purchased.')
row2.add_widget(l)
row2.add_widget(w)
layout.add_widget(row2)
w = self.makeCarousels(5,4,3)
b = Button(text='Click Me!!!')
b.bind(on_press=(lambda e=1: self.printCindexes()))
l = Label(text='Please enter the miles driven on your last tank.(Trip)')
row3.add_widget(l)
row3.add_widget(w)
layout.add_widget(row3)
layout.add_widget(b)
self.layout = layout
return layout
def makeCarousels(self,numOfCarous,placeHolder,row):
#this function just makes numOfCarous carousels
#and puts a '.' at placeHolder
check = False
layout = BoxLayout(orientation='horizontal')
for i in range(0,numOfCarous):
if i == (placeHolder - 1):
check = True
c = Carousel(direction = 'top')
else:
c = Carousel(direction = 'top')
if row == 1:
self.Money.append(c)
elif row == 2:
self.Gals.append(c)
elif row == 3:
self.Trip.append(c)
for num in CAROUSEL_OUTPUT:
l = Label(text=str(num))
c.add_widget(l)
if check:
l = Label(text='.')
layout.add_widget(c)
layout.add_widget(l)
check = False
else:
layout.add_widget(c)
return layout
def printCindexes(self):
self.calculateValues(self.Money,4,1)
self.calculateValues(self.Gals,3,2)
self.calculateValues(self.Trip,4,3)
print '\n'
def calculateValues(self,list,placeHolder,row):
numOfEntries = len(list)
total = 0.0
factor = 1.0
for n in range(0,placeHolder-1):
factor=factor*10.0
for n in list:
total += factor*n.index
factor = factor/10.0
if row == 1:
print 'Total Paid: $%6.2f' %(total)
elif row == 2:
print 'Total Gallons: %7.4f gallons' %(total)
elif row == 3:
print 'Total Trip: %5.1f miles' %(total)
if __name__ == '__main__':
MyApp().run()
再次感谢大家!!!!