NASZE SERWISY:    ANDROID   LINUX   MAEMO   SYMBIAN   WEBOS




Hosting sponsoruje:



GRIN3 - polskie fonty

Profesjonalne czcionki z polskimi znakami - czcionki.com

OpenMobile on Facebook


 

[Python] Ramka okna

Odpowiednie forum do zadawania pytań dotyczących rozpoczęcia programowania.

[Python] Ramka okna

Postprzez arthuras » 25 lipca 2009, o 18:17

Witam,
czy podpowie ktoś co trzeba wpisać, by wokół zdefiniowanego okna pojawiła sie ramka ?, najlepiej, żeby można było zmieniać jej kolor
Kod: Zaznacz cały
swidth, sheight = sysinfo.display_pixels()
height = sheight * 0.55
width = swidth * 0.9
top = sheight * 0.03
left = swidth * 0.05
window = TopWindow.TopWindow()
window.size = (width, height)
window.corner_type = 'corner5'
window.position = (left,top)
window.background_color = 0xFFFFFF
window.shadow = 3

z góry thx.
arthuras
1%
1%
 
Posty: 20
Dołączył(a): 3 stycznia 2006, o 00:29
Mod.tel.: N95 8GB
    WindowsXPFirefox

Re: [Python] Ramka okna

Postprzez mawhy » 26 lipca 2009, o 21:50

Załaduj obrazek który będze miał ramkę

Kod: Zaznacz cały
image = graphics.Image.open("C:\\myimage.gif") #For example
window.add_image(image, (20,40))
mawhy
30%
30%
 
Posty: 104
Dołączył(a): 19 stycznia 2008, o 00:24
Lokalizacja: Lublin
    WindowsXPFirefox

Re: [Python] Ramka okna

Postprzez arthuras » 27 lipca 2009, o 00:33

mawhy napisał(a):Załaduj obrazek który będze miał ramkę


Hmm, chodzi bardziej o to, by do zdjęcia dołożyć ramkę (niż robić zdjęcia z ramkami) w wybranym kolorze. Poniżej cały kod skryptu, napisanego przez Darrarski'ego do wyświetlania obrazka osoby dzwoniącej, może to pozwoli rozwiązać mój problem. Uprzedzając odpowiedzi typu "zwróć się do darrarskiego", kolega ten nie udziela sie już na forum.

Kod: Zaznacz cały
# Caller Image Server v0.8.1 by Darrarski www.piastuff.info
# poprawka A1:
# - dla osob z ksiazki telefonicznej wyswietla zdjecia tylko
#   jesli istnieja pliki w E:\Image\Callers\
# - dla osob z poza ksiazki telefonicznej wyswietla unknown.jpg

import appuifw
import e32
import telephone
import TopWindow
import graphics
import sysinfo
import contacts
import os
import appswitch

def calling(state): # funckja wyswietlajaca okno ze zdjeciem
    if (str(state[0])==u'3'): # jesli ktos dzwoni
        db = contacts.open()
        caller = db.find(str(state[1]))
        if caller: # jesli osoba jest w ksiazce tel.
            first_name = caller[0].find('first_name')
            last_name = caller[0].find('last_name')
            if first_name:
                if last_name:
                    caller_name = first_name[0].value + u' ' + last_name[0].value
                else:
                    caller_name = first_name[0].value
            elif last_name:
                caller_name = last_name[0].value
            else:
                caller_name = u'unknown'
            if os.path.exists('E:\\Images\\Callers\\'+caller_name+'.jpg'):
                image = graphics.Image.open('E:\\Images\\Callers\\'+caller_name+'.jpg')
                window.add_image(image, (0, 0, width, height))
                window.show()
        else: # jesli nie rozpoznano dzwoniacego
            image = graphics.Image.open('E:\\Images\\Callers\\unknown.jpg')
            window.add_image(image, (0, 0, width, height))
            window.show()
    else: # jesli odebrano lub odrzucono polaczenie
        window.hide()

def quit():
    if appuifw.query(u'Abandon showing images on incoming call?', 'query'):
        app_lock.signal()
        #appuifw.app.set_exit()

def hide():
    apps = appswitch.application_list(False)
    appswitch.switch_to_bg(apps[0])

def handle_redraw(rect): 
    if img: canvas.blit(img) 
       
# zdefiniowanie okna ze zdjeciem osoby dzwoniacej
swidth, sheight = sysinfo.display_pixels()
height = sheight * 0.75
width = swidth * 0.75
top = sheight * 0.04
left = swidth * 0.00
window = TopWindow.TopWindow()
window.size = (width, height)
window.corner_type = 'corner5'
window.position = (left,top)
window.background_color = 0x06ff00
window.shadow = 3

telephone.call_state(calling) # wywoalnie funckji gdy zmiana stanu polaczenia

# funkcje aplikacji
appuifw.app.title = u'CallerImage'
img = None
canvas = appuifw.Canvas(redraw_callback = handle_redraw)
appuifw.app.exit_key_handler = hide
appuifw.app.menu = [ (u'Exit', quit) ]
appuifw.app.body = canvas
img = graphics.Image.new(canvas.size) 
img.clear()
img.text((10,40), u'CallerImage Server v0.8.1', fill=0x003196)
canvas.blit(img)
app_lock = e32.Ao_lock()
app_lock.wait()
arthuras
1%
1%
 
Posty: 20
Dołączył(a): 3 stycznia 2006, o 00:29
Mod.tel.: N95 8GB
    WindowsXPFirefox

Re: [Python] Ramka okna

Postprzez mawhy » 28 lipca 2009, o 20:30

Hm... skomplikowane życzenie:
Ja bym tak zrobił:
- otworzył obrazek na Canvas
- dorysował ramkę
- zapisał do pliku tymczasowegp
- wyczyścił canvas
- otworzył topwindow
- załadował do topwindow plik tymczasowy
-podczas zamykania skryptu usunac plik tymczasowy

Może być?
Pozdrawiam
Michał Małaj
mawhy
30%
30%
 
Posty: 104
Dołączył(a): 19 stycznia 2008, o 00:24
Lokalizacja: Lublin
    WindowsXPFirefox

Re: [Python] Ramka okna

Postprzez issa » 29 lipca 2009, o 21:39

Arthuras - czy ten kod Ci odpowiada?

Kod: Zaznacz cały

import graphics , appuifw , e32

def wyjscie ():
   app_zamknij.signal()

appuifw.app.body = plotno = appuifw.Canvas ()
appuifw.app.screen = "full"
appuifw.app.exit_key_handler = wyjscie
szer , wys = plotno.size
obrazek = graphics.Image.open (u"e:\\Fotka\\wodospad.jpg")
bufor = graphics.Image.new((szer , wys))
bufor.clear ((0,0,255))
bufor.blit  (obrazek , target = (40,40,280,200) ,scale = 1)
bufor.rectangle ((30,30,290,40),fill = (255,0,0))
bufor.rectangle ((30,30,40,210),fill = (255,0,0))
bufor.rectangle ((30,200,290,210) , fill = (255,0,0))
bufor.rectangle ((280,30,290,210) , fill = (255,0,0))
plotno.blit(bufor)



app_zamknij = e32.Ao_lock()
app_zamknij.wait()



Wczytuję fotkę (obrazek) z karty.
Statyczną metodą new klasy Image z modułu graphics tworzę mutowalny obrazek (bufor) o wymiarach ekranu.
Czyszczę bufor na niebiesko.
Obrazek łączę z buforem , w odpowiednich współrzędnych wyznaczanych przez (target) , musisz go zeskalować (scale = 1) bo innaczej się rozciągnie.
Rysujemy ramkę wywołując na rzecz obiektu bufor metodę rectangle , 4 prostokąty utworzą ramkę w kolorze czerwonym (fill = (255,0,0))
Bufor łączymy z płótnem by stał się widzialny.
Pozdrawiam.
issa
10%
10%
 
Posty: 49
Dołączył(a): 11 sierpnia 2006, o 20:13
    WindowsXPFirefox

Re: [Python] Ramka okna

Postprzez arthuras » 30 lipca 2009, o 00:28

mawhy napisał(a):Hm... skomplikowane życzenie:
...
Pozdrawiam
Michał Małaj


issa napisał(a):Arthuras - czy ten kod Ci odpowiada?
...
Pozdrawiam.

Dziękuję bardzo za zainteresowanie tematem i pomoc, ale troszkę mnie to przerosło, wydawało mi się, że można wrzucić linijkę kodu, która po prostu narysuje ramkę. Niestety nie mam pojęcia o pythonie :( więc raczej nie uda mi się sklecić tego w całość. Jeszcze raz dziękuję za poświęcony czas i pozdrawiam :super:
arthuras
1%
1%
 
Posty: 20
Dołączył(a): 3 stycznia 2006, o 00:29
Mod.tel.: N95 8GB
    WindowsXPFirefox


Powrót do Od czego zacząć?

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość