Witam
Ponownie (który to już raz) zabrałem się za mój mały projekcik na Androida. Dodaję "okienko" z tutorialem. Okienko można sobie przemieszczać, aby nie zasłaniało ekranu głównego. Problemem jest tło i niechęć do klas i pliku kv.
Używając kv
i class potrafię "przykleić" rectangle
do layout
, ale chciałbym uzyskać ten sam efekt z with
(linijka 37)
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
from kivy.app import runTouchApp,stopTouchApp
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.graphics import Color,Rectangle
from kivy.clock import Clock
gtFLOATTB_BTNS_COL=(.6,.8,.6,.8)
gtTUTOR_WIN_BACKG = (.2,.2,.7,.8)
gTutTEXT='''Tutorial tekst difuoi dugoidj idjf oidjf iodgf oijfd oigjd oidjf
dfkl kjgoifd jgifdjg ifd jgifd jgifd jgifdyut yt rtytr yr
igrd joijvk xvkjnb g dsis gidjfewoisjf oiw jfoiwjf.'''
def f_moveWIN(*d):
Clock.schedule_once(lambda _: setattr(wlay,'pos',(d[2].pos[0]-d[0].delta[0],
d[2].pos[1]-d[0].delta[1])))
return None
def f_touchDownWINbar(*d):
d[0].delta[0]=d[2].pos[0]-d[0].pos[0]
d[0].delta[1]=d[2].pos[1]-d[0].pos[1]
return None
px,py,hbtn,wwin,hwin=10,70,40,400,160 # data for tutorial window
mlay = FloatLayout(size_hint=(1,1)) # layer for whole window
wlay = BoxLayout(orientation='vertical',size_hint=(None,None),size=(wwin,hwin),pos=(px,py))
wlay.isOpen = None # extra parameter for open/close purpose
wlay.delta = [0,0]
with wlay.canvas.before:
Color(*gtTUTOR_WIN_BACKG)
Rectangle(pos=wlay.pos,size=wlay.size) # <<<<<<< tu jest problem ????
#################################
#<MyTutWinLay>: # plik kv dla klasy: class MyTutWinLay(BoxLayout):
#canvas.before:
#Color:
#rgba: root.backColor
#Rectangle:
#pos: self.pos
#size: self.size
#################################
drag_BTN = Button(text='== Tutorial ==',size_hint=(1,None),
height=hbtn,background_color=gtFLOATTB_BTNS_COL)
drag_BTN.fbind('on_touch_down',f_touchDownWINbar,wlay)
drag_BTN.fbind('on_touch_move',f_moveWIN,wlay)
textTuto = Label(text=gTutTEXT) #,pos_hint={'center_x':0,'y':0})
wlay.add_widget(textTuto)
wlay.add_widget(drag_BTN)
mlay.add_widget(wlay)
runTouchApp(mlay)
quit()
Istnieje jakieś rozwiązanie mojego problemu?
Pozdrawiam
Radek Głębicki