Я пытался показать список на втором экране после нажатия кнопки на главном экране. но список не будет отображаться, но у меня нет ошибок. что-то не так с моим кодом kivy?
это мой код
def rumus_power_np(radius, air_density, efficiency_factor, kecepatan_angin):
return 3.14/2 * pow(radius, 2) * np.power(kecepatan_angin, 3) * air_density * efficiency_factor
class MainWindow(Screen):
def btn(self):
print("name: ",self.radius.text)
predicted_power = rumus_power_np(int(self.radius.text), float(self.air_density.text), float(self.efficiency_factor.text)/100, predictions)
data = {'time': series.date[-109:].dt.time,'power': predicted_power}
df = pd.DataFrame (data, columns = ['time','power'])
plt.plot(df.time,df.power, color='orange', label = 'predicted power')
plt.xlabel("time")
plt.ylabel("power (watt)")
plt.legend()
print(predicted_power)
self.manager.get_screen('second').ids.rv.data = [{'time': df.time}, {'power': df.power}]
class SecondWindow(Screen):
def btndu(self):
self.ids.destination.add_widget(FigureCanvasKivyAgg(plt.gcf()))
class WindowManager(ScreenManager):
pass
kv = Builder.load_file("my.kv")
class MyMainApp(App):
def build(self):
return kv
if __name__=="__main__":
MyMainApp().run()
данные прогнозируемой мощности существуют из кода над ним и должны иметь 109 строк из этих данных.
а это мой код kv
#:kivy 1.9.1
WindowManager:
MainWindow:
SecondWindow:
<MainWindow>:
name: "main"
radius: radius
air_density: air_density
efficiency_factor: efficiency_factor
FloatLayout:
Label:
text:"Radius: "
size_hint: 0.5,0.12
pos_hint: {"x":0, "top":0.8}
font_size: (root.width**2 + root.height**2) / 14**4
TextInput:
id: radius
multinline:False
pos_hint: {"x":0.5, "top":0.78}
size_hint: 0.3, 0.06
font_size: (root.width**2 + root.height**2) / 14**4
Label:
text:"Meter"
size_hint: 0.5,0.12
pos_hint: {"x":0.62, "top":0.8}
font_size: (root.width**2 + root.height**2) / 16**4
Label:
text:"Air\nDensity: "
size_hint: 0.5,0.12
pos_hint: {"x":0, "top":0.8-0.13}
font_size: (root.width**2 + root.height**2) / 14**4
TextInput:
id: air_density
multinline:False
pos_hint: {"x":0.5, "top":0.78-0.13}
size_hint: 0.3, 0.06
font_size: (root.width**2 + root.height**2) / 14**4
Label:
text:"kg/m³"
size_hint: 0.5,0.12
pos_hint: {"x":0.62, "top":0.8-0.13}
font_size: (root.width**2 + root.height**2) / 16**4
Label:
text:"efficiency\nfactor: "
size_hint: 0.5,0.12
pos_hint: {"x":0, "top":0.8-0.13*2}
font_size: (root.width**2 + root.height**2) / 14**4
TextInput:
id: efficiency_factor
multinline:False
pos_hint: {"x":0.5, "top":0.78-0.13*2}
size_hint: 0.3, 0.06
font_size: (root.width**2 + root.height**2) / 14**4
Label:
text:"%"
size_hint: 0.5,0.12
pos_hint: {"x":0.62, "top":0.8-0.13*2}
font_size: (root.width**2 + root.height**2) / 16**4
Button:
text:"Submit"
pos_hint:{"x":0.3,"y":0.25}
size_hint: 0.4, 0.1
font_size: (root.width**2 + root.height**2) / 14**4
on_release:
root.btn()
app.root.current = "second"
root.manager.transition.direction = "left"
<SecondWindow>:
name: "second"
GridLayout:
cols:1
BoxLayout:
id: destination
RecycleView:
id: rv
viewclass: 'Label'
RecycleBoxLayout:
default_size: None, dp(56)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
Button:
text: "show plot"
on_release:
root.btndu()
пожалуйста, помогите мне, если что-то не так? Потому что это мой первый раз