В названии нифига не понятно, сейчас объясню. У меня есть код(будет ниже), и там я добавил Tabs, так же туда справа добавил кнопку сетингс, и мне нужно чтобы после нажатия открывался экран с настройками, и не было видно toolbar который я потом доделаю, но не работает
import pyowm
from pyowm.owm import OWM
from pyowm.utils.config import get_config_from
import subprocess
import sys
import requests
from bs4 import BeautifulSoup as BS
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import StringProperty
from kivy.core.text import LabelBase
from kivymd.uix.snackbar import Snackbar
from kivymd.font_definitions import theme_font_styles
from kivymd.uix.button import MDFlatButton
from kivymd.uix.button import MDIconButton
from kivymd.app import MDApp
from kivymd.uix.tab import MDTabsBase
config_dict = get_config_from('config.json')
owm = pyowm.OWM('ed3d1e950f0d1e73b26cfd7f55fbb4f9', config_dict)
mgr = owm.weather_manager()
sm = ScreenManager()
kv = """
BoxLayout:
orientation: "vertical"
MDToolbar:
title: "Парсинг сайтів"
title_font_style: 'Custom'
md_font_style: 'FFont'
MDIconButton:
icon: "settings"
theme_text_color: "Custom"
md_text_color: 0, 1, 1, 1
on_press: app.stgs()
MDTabs:
font_style: 'FFont'
id: tab
<Lblv@MDLabel>:
font_size: '20sp'
halign: 'right'
valign: 'middle'
text_size: self.size
font_style: 'FFont'
bold: True
<Lblt@MDLabel>:
font_size: '80sp'
halign: 'left'
valign: 'middle'
font_style: 'FFont'
bold: True
<ScreenManag>:
wWindow:
krvWindow:
SettingsWindow:
<wWindow>:
name: 'weather'
FitImage:
source: "Images/litev.jpg"
FloatLayout:
id: fl
MDIconButton:
icon: "check-bold"
pos_hint: {'y': .89, 'x': .75}
on_press: root.update()
MDLabel:
id: error
font_style: 'FFont'
text: ""
pos_hint: {'y': .365, 'x': .4}
FloatLayout:
md_bg_color: 1, .4, .1, 1
MDTextField:
hint_text: "Назва міста/села"
fill_color: 0, 0, 0, .4
color_mode: 'custom'
line_color_focus: 0, 1, 1, 1
text: ""
mode: "rectangle"
id: ccity
pos_hint: {'y': .90, 'x': .3}
size_hint: .4, .067
current_hint_text_color: 1, 1, .3, .8
MDGridLayout:
cols: 2
size_hint: .9, .8
md_bg_color: 0, .8, 1, .6
pos_hint: {'y': .03, 'x': .05}
MDBoxLayout:
spacing: 130
orientation: 'vertical'
padding: [100, 0, 0, 0]
Lblt:
id: label
text: "Температура Зараз"
Lblt:
id: label2
text: "Мін/Макс Температура Сьогодні"
Lblt:
id: label3
text: "Вологість(%)"
Lblt:
id: label4
text: "Небo"
MDBoxLayout:
spacing: 130
orientation: 'vertical'
padding: [0, 0, 90, 0]
Lblv:
id: res
text: "0.0"
Lblv:
id: res1
text: "0/0"
Lblv:
id: res2
text: "0%"
Lblv:
id: res3
text: "None"
text_color: 1, 1, 0, 1
MDGridLayout:
rows: 4
size_hint_y: .8
spacing: 210
padding: 50
pos_hint: {'y': .03, 'x': .03}
MDIcon:
icon: "temperature-celsius"
MDIcon:
icon: "thermometer-lines"
MDIcon:
icon: "water-percent"
MDIcon:
icon: "weather-partly-cloudy"
<krvWindow>:
name: 'krv'
BoxLayout:
MDIcon:
icon: "youtube"
<SettingsWindow>:
name: 'stg'
BoxLayout:
MDIcon:
icon: "google"
"""
class krvWindow(MDTabsBase, Screen):
pass
class SettingsWindow(Screen):
pass
class wWindow(MDTabsBase, Screen):
def update(self):
ciity = open('city.txt', 'r')
if (self.ids.ccity.text == ""):
city = ciity.read()
self.ids.ccity.text = str(city)
ciity.close()
else:
city = str(self.ids.ccity.text)
rt = 'https://sinoptik.ua/погода-' + str(city)
r = requests.get(rt)
html = BS(r.content, 'html.parser')
try:
for elms in html.select('#content'):
t_min = elms.select('.temperature .min > span')[0].text
t_max = elms.select('.temperature .max > span')[0].text
observation = mgr.weather_at_place(city)
w = observation.weather
l = w.temperature('celsius')['temp']
nt = w.temperature('celsius')['temp_min']
xt = w.temperature('celsius')['temp_max']
temp = str(l) + " °C"
answer = w.detailed_status
hum = w.humidity
mmr = str(hum) + "%"
self.ids.res.text = str(temp)
self.ids.res1.text = str(t_min + "/" + t_max)
self.ids.res2.text = str(mmr)
self.ids.res3.text = str(answer)
self.ids.error.text = ""
cwity = open('city.txt', 'w')
cwity.write(city)
cwity.close()
except:
self.ids.res.text = str("0.0")
self.ids.res1.text = str("0/0")
self.ids.res2.text = str("0%")
self.ids.res3.text = str("None")
self.ids.error.text = "Помилка"
Snackbar(text = "Помилка, введіть правильну назву міста або села").show()
class ScreenManag(ScreenManager):
pass
class MainWindow(MDApp):
n = 3
def build(self):
self.theme_cls.primary_palette = "Teal"
LabelBase.register(
name="DataFont",
fn_regular="Fonts/19439.ttf")
theme_font_styles.append('DataFont')
self.theme_cls.font_styles["DataFont"] = [
"DataFont",
18,
False,
0.15,
]
LabelBase.register(
name="FFont",
fn_regular="Fonts/18685.ttf")
theme_font_styles.append('FFont')
self.theme_cls.font_styles["FFont"] = [
"FFont",
24,
False,
0.15,
]
return Builder.load_string(kv)
def on_start(self):
sm.add_widget(wWindow(name='weather'))
sm.add_widget(krvWindow(name='krv'))
sm.add_widget(SettingsWindow(name='stg'))
nms = ["Курс биткоина", " Курс доллара и эвро", "Коронавирус", "Погода"]
w1 = self.root.ids.tab.add_widget(wWindow(text=nms[self.n]))
self.n -= 1
w2 = self.root.ids.tab.add_widget(krvWindow(text=nms[self.n]))
pass
def stgs(self):
sm.current = 'stg'
if __name__ == '__main__':
MainWindow().run()