@Dime38
Учу Python

KivyMD — TypeError: update() missing 4 required positional arguments: 'instance_tabs', 'instance_tab', 'instance_tab_label', and 'tab_text'?

В kivymd я делаю Tabs, и для обновления мне нужно кнопка(я сделал парсер погоды), всё работало по обновлении через on_tab_switch, но теперь я захотел сделать через кнопку, и вылезает ошибка:
TypeError: update() missing 4 required positional arguments: 'instance_tabs', 'instance_tab', 'instance_tab_label', and 'tab_text'


И вот код:

import pyowm

from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout

from kivymd.uix.button import MDIconButton
from kivymd.app import MDApp
from kivymd.uix.tab import MDTabsBase

kv = '''
BoxLayout:
    orientation: "vertical"

    MDToolbar:
        title: "View Allthings"

    MDTabs:
        id: tab
        on_tab_switch: app.update()

<w>:
	FloatLayout:
	    MDIconButton:
	    	icon: "update"
   		 theme_text_color: "Custom"
    		text_color: app.theme_cls.primary_color
    		on_press: app.update()
    		
	    MDTextField:
	    	hint_text: "Название города"
	    	mode: "rectangle"
	    	id: ccity
	    	pos_hint: {'y': .93, 'x': .3}
	    	size_hint: .4, .067
    	MDLabel:
    		pos_hint: {'y': .0, 'x': .0}
      	  id: label
      	  text: "Tab"
       	 halign: "center"
'''
    
class w(FloatLayout, MDTabsBase):
	pass
	
class k(FloatLayout, MDTabsBase):
	pass


class Main(MDApp):
    n = 3

    def build(self):
        return Builder.load_string(kv)

    def on_start(self):
    	nms = ["Курс биткоина", "Курс доллара и эвро", "Коронавирус", "Погода"]
    	w1 = self.root.ids.tab.add_widget(w(text=nms[self.n]))
    	self.n -= 1
    	w2 = self.root.ids.tab.add_widget(k(text=nms[self.n]))
    def on_tab_switch(
        self, instance_tabs, instance_tab, instance_tab_label, tab_text
    ):
    	instance_tab.ids.label.text = tab_text
    def update(self, instance_tabs, instance_tab, instance_tab_label, tab_text):
    	owm = pyowm.OWM('ed3d1e950f0d1e')
    	city = str(instance_tab.ids.ccity.text)
    	mgr = owm.weather_manager()
    	observation = mgr.weather_at_place(city)
    	w = observation.weather
    	l = w.temperature('celsius')['temp']
    	temp = "Температура в городе " + city + '\n' + str(l) + " градусов"
    	instance_tab.ids.label.text = str(temp)

if __name__ == '__main__':
	Main().run()
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы