Проблема с рисованием прямоугольника в киви на экране плавающего макета.Python

Программы на Python
Anonymous
Проблема с рисованием прямоугольника в киви на экране плавающего макета.

Сообщение Anonymous »

Я вообще не понимаю киви. Я просмотрел так много уроков и примеров, но хоть убей, я до сих пор не могу выполнить простую задачу по рисованию прямоугольника на своем кв-экране. Я пытался придерживаться подхода «делать всю графику на языке kv и логику на Python», рекомендованного документацией kivy.
В любом случае я просто хочу нарисовать зеленый прямоугольник поверх моего существующий экран для использования в качестве индикатора выполнения - поэтому в идеале мое приложение Python будет контролировать ширину прямоугольника, чтобы отображать ход события. Но я застрял здесь навсегда. Что бы я ни делал, я просто получаю зеленый квадрат в левом нижнем углу экрана, и я не могу его переместить или изменить его размер, что бы я ни ставил. И на данный момент я определенно не могу контролировать размер из кода Python.
Кто-нибудь может помочь мне понять, как я могу добавить прямоугольник на свой экран с плавающим макетом (и иметь его ширину быть изменен из кода Python)? Большое спасибо за любые советы.
Соответствующий (значительно урезанный) код ниже:
Код KV:

Код: Выделить всё

:
name: 'rs_dock'
FloatLayout:
id:dock_layout
Image:
source: f'{root.mimic_directory}/Mimic/Pi/imgs/russian/ROSdockBackground.png'
fit_mode: "fill"
Label:
id: ros_mode
pos_hint: {"center_x": 0.33, "center_y": 0.73}
text: '-'
font_size: 16
text_size: 300,None
halign: 'left'
markup: True
color: root.signalcolor
Widget:
id: docking_bar
#size_hint: 0.5,0.5
#pos_hint: {'center_x':0.6,'center_y':0.6}
#pos: 800 * 0.53, 600 * 0.205
#size: 800 * 0.325, 600 * 0.04
pos: 400,400
size: 600,10
canvas.after:
Color:
rgba: 0, 1, 0, 0.5
Rectangle:
pos: self.pos
size: self.size
Код Python:

Код: Выделить всё

from kivy.app import App
from kivy.lang import Builder
from kivy.network.urlrequest import UrlRequest #using this to request webpages
from kivy.clock import Clock
from kivy.event import EventDispatcher
from kivy.properties import ObjectProperty
from kivy.uix.screenmanager import ScreenManager, Screen, SwapTransition, NoTransition
from kivy.uix.popup import Popup
from kivy.uix.label import Label

mimic_data_directory = Path.home() / '.mimic_data'
mimic_directory = op.abspath(op.join(__file__, op.pardir, op.pardir, op.pardir))

class MainScreen(Screen):
mimic_directory = op.abspath(op.join(__file__, op.pardir, op.pardir, op.pardir))

class RS_Dock_Screen(Screen, EventDispatcher):
mimic_directory = op.abspath(op.join(__file__, op.pardir, op.pardir, op.pardir))
signalcolor = ObjectProperty([1, 1, 1])

class MainScreenManager(ScreenManager):
mimic_directory = op.abspath(op.join(__file__, op.pardir, op.pardir, op.pardir))

class MainApp(App):
mimic_directory = op.abspath(op.join(__file__, op.pardir, op.pardir, op.pardir))
ros_data = []

def build(self):
global startup, ScreenList, stopAnimation

self.main_screen = MainScreen(name = 'main')
self.rs_dock = RS_Dock_Screen(name='rs_dock')
self.rs_eva = EVA_RS_Screen(name='rs_eva')
self.rs_screen = RS_Screen(name='rs')

root = MainScreenManager(transition=NoTransition())
root.add_widget(self.main_screen)
root.add_widget(self.rs_dock)
root.add_widget(self.rs_eva)
root.add_widget(self.rs_screen)

root.current = 'main' #change this back to main when done with eva setup
return root

def update_labels(self, dt):
value = 1
#self.rs_dock.update_progress(value)
print(self.rs_dock.ids.dock_layout.width)
#self.rs_dock.ids.docking_bar.size = (self.rs_dock.ids.dock_layout.width * value * 0.325, self.rs_dock.ids.dock_layout.height * 0.04)

#All GUI Screens are on separate kv files
Builder.load_file(mimic_directory + '/Mimic/Pi/Screens/MainScreen.kv')
Builder.load_file(mimic_directory + '/Mimic/Pi/Screens/RS_Dock_Screen.kv')
Builder.load_string('''
#:kivy 1.8
#:import kivy kivy
#:import win kivy.core.window
ScreenManager:
MainScreen:
RS_Dock_Screen:

''')

if __name__ == '__main__':
MainApp().run()
Изображение


Подробнее здесь: https://stackoverflow.com/questions/788 ... out-screen

Вернуться в «Python»