【发布时间】:2018-11-13 17:06:41
【问题描述】:
当我运行下面的代码时,我的 kivy 窗口关闭并显示 这个错误:
TypeError: book() takes 1 positional argument but 2 were given
我尝试了很多东西,但我无法解决问题。
我有一个 Windows 应用程序,其中有 4 个按钮。当用户点击它时,他应该跳到下一个屏幕,但是当我点击它时,kivy 窗口会关闭。
class main_menu(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.pic = self.ids["pic"]
self.pic1 = self.ids["pic1"]
self.ac=self.ids["ac"]
self.sd=self.ids["sd"]
print(phone)
#self.ac.text=self.user_text.text
#print(self.l.user_text.text,"jkckhjkfgh")
self.lst = ["1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"]
self.sql="select * from snm"
cursor.execute(self.sql)
self.result = cursor.fetchall()
self.pic.add_widget(Button(text = " {} ".format(self.result[0][0]) + '\n' +
" {} , {} ".format(self.result[0][2],self.result[0][3])
+ "\n\n Seating Capacity :"
+ " {}".format(self.result[0][1])
,font_size=30
,font_name="font1"
,background_normal=self.lst[0]
,on_press=self.book
))
self.pic.add_widget(Button(text=" {} ".format(self.result[1][0]) + '\n' +
" {} , {} ".format(self.result[1][2], self.result[1][3])
+ "\n\n Seating Capacity :"
+ " {}".format(self.result[1][1])
,font_size=30
,font_name="font1"
,background_normal=self.lst[1]
,on_press=self.book
))
self.pic.add_widget(Button(text=" {} ".format(self.result[2][0]) + '\n' +
" {} , {} ".format(self.result[2][2], self.result[2][3])
+ "\n\n Seating Capacity :"
+ " {}".format(self.result[2][1])
,font_size=30
,font_name="font1"
,background_normal=self.lst[2]
,on_press=self.book
))
self.pic.add_widget(Button(text=" {} ".format(self.result[3][0]) + '\n' +
" {} , {} ".format(self.result[3][2], self.result[3][3])
+ "\n\n Seating Capacity :"
+ " {}".format(self.result[3][1])
,font_size=30
,font_name="font1"
,background_normal=self.lst[3]
,on_press=self.book
))
self.h = 4
self.pic.size = (100, self.h *600)
def book(self):
sm.current="book_ticket"
class PopUp(Popup):
def set(self):
self.title = 'Wrong Login Details'
self.content = Label(text = 'You have entered wrong Login Details',font_size=30)
self.size_hint = (None,None)
self.size = (600,250)
class book_ticket(Screen):
def __init__(self,**kwargs):
super().__init__(**kwargs)
t1=signin(name='signin')
t2=details(name='details')
t3=main_menu(name="main_menu")
t4=book_ticket(name="book_ticket")
print(phone)
print(type(t1))
#print(t1.user_text.text,phone,23)
#create local login applic def Start(self):
sm = ScreenManager()
sm.add_widget(t1)
sm.add_widget(t2)
sm.add_widget(t3)
sm.add_widget(t4)
class main(App):
def build(self):
return main_menu()
main().run()
【问题讨论】:
-
需要将 book 方法定义为
def book(self, name) -
@yogkm 我做到了,但是按钮不起作用,即它只是被按下没有执行任何功能
-
我回答你的问题了吗??
标签: python-3.x kivy kivy-language