Я новичок в python и пробую Kivy для создания GUI.Чтобы добавить фон к макету, я пытаюсь следовать примеру, приведенному в официальной документации.
(см. Пожалуйста, если вам нужно посмотреть официальную документацию)
https://kivy.org/docs/guide/widgets.html#adding-a-background-to-a-layout
В моем коде ниже, update_bg (), функция используется для обновления размера и / или положения фона (прямоугольник, нарисованный на холсте) всякий раз, когда его родитель ('layout', Kivy)Jargon) меняет свою позицию и / или размер.
class ConversationBox(BoxLayout):
def __init__(self, **kwargs):
super(ConversationBox, self).__init__(**kwargs)
beside_message = BoxLayout(orientation='vertical')
whatever_said = Label(text='Someone said Something', size_hint=(None, None), size=(100, 60))
remove_button = Button(text='X', size_hint=(None, None), size=(30, 30))
log = Label(text='Log', size_hint=(None, None), size=(30, 30))
with self.canvas:
Color(0, 1, 0, 1)
self.background = Rectangle(pos_hint=(None, None), size_hint=(None, None), pos=self.pos, size=self.size)
self.bind(pos=self.update_bg, size=self.update_bg)
self.add_widget(whatever_said)
beside_message.add_widget(remove_button)
beside_message.add_widget(log)
self.add_widget(beside_message)
def update_bg(self): # <----------------This is where the problem is
self.background.pos = self.pos
self.background.size = self.size
class test(App):
def build(self):
return ConversationBox(orientation='horizontal')
test().run()
Когда вы запускаете этот код, вы получаете и ошибку в консоли, то есть.
TypeError: update_bg ()принимает 1 позиционный аргумент, но было дано 3
Когда вы предоставите два дополнительных аргумента, скажем,
def update_bg(self, arbitrary_arg_1, arbitrary_arg_2):
Вы не получите никаких ошибок.Почему это происходит?У меня нулевая интуиция.