Python » Страница 751
-Программирование на Python
#7502
2012-04-04T20:59:23Z20:59 4 апр 2012
продолжаю изучать рисование на канвасе на таче.
# -*- coding: utf-8 -*-
print u'start'
import appuifw, key_codes
def pererisovka(event):
global point
canvas.text( (10, point), u'pererisovka', fill = (255, 255, 255))
def po1(pos):
global point
point+=30
def risovka(event):
global point
canvas.clear((255, 255, 255))
canvas.text( (100, point), u'risovka', fill = (255, 255, 255))
point=10
appuifw.app.directional_pad=False
appuifw.app.screen = 'normal'
canvas = appuifw.Canvas(event_callback=risovka, redraw_callback=pererisovka)
appuifw.app.body = canvas
canvas.bind(key_codes.EButton1Down, po1)
app_lock = appuifw.e32.Ao_lock()
app_lock.wait()
appuifw.app.exit_key_handler = lambda: app_lock.signal()
print u'end'
когда у меня выполнится функция risovka? потому что когда я тапаю по экрану у меня выполняется только функция pererisovka
#7504
2012-04-04T21:21:05Z21:21 4 апр 2012
точно.
щас попробую по другому. но все равно экран не становится белым
-------------
добавлено в 21.20: все равно я на экране вижу только pererisovka
# -*- coding: utf-8 -*-
print u'start'
import appuifw, key_codes
def pererisovka(event):
global point
canvas.clear((0,255,0))
canvas.text( (10, point), u'pererisovka', fill = (255, 255, 255))
def po1(pos):
global point
point+=30
def risovka(event):
global point
canvas.clear((255,0,255))
canvas.text( (100, point), u'risovka', fill = (0, 255, 255))
point=10
appuifw.app.directional_pad=False
appuifw.app.screen = 'normal'
canvas = appuifw.Canvas(event_callback=risovka, redraw_callback=pererisovka)
appuifw.app.body = canvas
#canvas.bind(key_codes.EDrag, po1)
canvas.bind(key_codes.EButton1Down, po1)
app_lock = appuifw.e32.Ao_lock()
app_lock.wait()
appuifw.app.exit_key_handler = lambda: app_lock.signal()
print u'end'
-------------
добавлено в 21.21: [!!!]
-------------
добавлено в 21.22: на отступы не смотрите. форум табы так ставит
#7506
2012-04-04T21:46:13Z21:46 4 апр 2012
ну да.
Скриншот
[!!!] [!!!] [!!!] [!!!]
-------------
добавлено в 21.47: ну если с этим не понятно.
то у меня есть второй вопрос.
я уже разобрался с нажатиями.
EButton1Down, EButton1Up, EDrag
хочу нарисовать свой интерфейс. тот же листбокс. нарисовать то я её нарисую. а вот как сделать прокрутку пока не пойму.
щас попробую нарисовать примерно примитивы и показать
-------------
добавлено в 21.55: вот что у меня получилось.
Код программы
# -*- coding: utf-8 -*-
import appuifw, key_codes
def pererisovka(event):
canvas.rectangle( (0, 0, 360, 100), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
canvas.text( (10, 50), u'Item 1', fill = (255, 0, 255))
canvas.rectangle( (0, 101, 360, 200), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
canvas.text( (10, 150), u'Item 2', fill = (255, 0, 255))
canvas.rectangle( (0, 201, 360, 300), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
canvas.text( (10, 250), u'Item 3', fill = (255, 0, 255))
canvas.rectangle( (0, 301, 360, 400), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
canvas.text( (10, 350), u'Item 4', fill = (255, 0, 255))
canvas.rectangle( (0, 402, 360, 500), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
canvas.text( (10, 450), u'Item 5', fill = (255, 0, 255))
canvas.rectangle( (0, 502, 360, 600), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
canvas.text( (10, 550), u'Item 6', fill = (255, 0, 255))
def risovka(event):
global point
canvas.clear((255, 0, 255))
canvas.text( (100, point), u'risovka', fill = (0, 255, 255))
appuifw.app.directional_pad=False
appuifw.app.screen = 'normal'
canvas = appuifw.Canvas(event_callback=risovka, redraw_callback=pererisovka)
appuifw.app.body = canvas
app_lock = appuifw.e32.Ao_lock()
app_lock.wait()
appuifw.app.exit_key_handler = lambda: app_lock.signal()
Скриншот
[!!!] [!!!]
#7507
2012-04-04T22:32:23Z22:32 4 апр 2012
Дело в том, что рисовать надо не на канвасе, а на объекте graphics.Image, в твоем случае graphics.Image.new(size). После всех прорисовок блитировать на канвас: canvas.blit(img). А функция redraw_callback вызывается только при обновлении экрана: вызов-отмена меню, сворачивания-заход в приложение итд. Там обычно такой код:
def redraw(x): canvas.blit(img).
Насчет листбокса: как он прокручиваться должен: пункты должны плавно плыть или скакать как при кнопочном управлении с шагом 1 пункт? Я просто тач не юзал.
#7508
2012-04-04T22:36:05Z22:36 4 апр 2012
хорошо. щас попробую рисовать на Image и вывести ту же самую картиинку.
листбокс листается у нас плавно.
-------------
добавлено в 22.40: итак. рисую на графике и вывожу на канвасе.
Код
# -*- coding: utf-8 -*-
import appuifw, key_codes, graphics
img=graphics.Image.new((360, 800))
img.rectangle( (0, 0, 360, 100), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
img.text( (10, 50), u'Item 11', fill = (255, 0, 255))
img.rectangle( (0, 101, 360, 200), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
img.text( (10, 150), u'Item 22', fill = (255, 0, 255))
img.rectangle( (0, 201, 360, 300), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
img.text( (10, 250), u'Item 33', fill = (255, 0, 255))
img.rectangle( (0, 301, 360, 400), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
img.text( (10, 350), u'Item 44', fill = (255, 0, 255))
img.rectangle( (0, 402, 360, 500), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
img.text( (10, 450), u'Item 55', fill = (255, 0, 255))
img.rectangle( (0, 502, 360, 600), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
img.text( (10, 550), u'Item 66', fill = (255, 0, 255))
img.rectangle( (0, 602, 360, 700), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
img.text( (10, 650), u'Item 76', fill = (255, 0, 255))
img.rectangle( (0, 702, 360, 780), outline = (255, 255, 255), fill = (0, 0, 0), width = 2)
img.text( (10, 750), u'Item 86', fill = (255, 0, 255))
def pererisovka(event):
global img
canvas.blit(img)
def risovka(event):
canvas.clear((255, 0, 255))
canvas.text( (100, 10), u'risovka', fill = (0, 255, 255))
appuifw.app.directional_pad=False
appuifw.app.screen = 'normal'
canvas = appuifw.Canvas(event_callback=risovka, redraw_callback=pererisovka)
appuifw.app.body = canvas
app_lock = appuifw.e32.Ao_lock()
app_lock.wait()
appuifw.app.exit_key_handler = lambda: app_lock.signal()
#7510
2012-04-05T08:00:00Z08:00 5 апр 2012
Ksench
т.е. что не так?
-------------
добавлено в 13.57: блин. никак не догоню как сделать прокрутку.
могу сделать только так.
отрисовать 6 пунктов. добавить кнопочку "ВНИЗ" и "ВВЕРХ", который отрисует новый список из 6 элементов и т.д.
эх. хотелось сделать прокрутку через Edrag.
- «
- 1
- 2
- --
- 750
- 751
- 752
- --
- 974
- 975
- »
Авторизуйтесь на сайте для написания ответа.