Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 1, 2013 02:07:55

Rejejej
Зарегистрирован: 2013-10-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Растолкуйте плс

Учу питон, но по учебникам не могу, и все.
Поэтому делаю все методом тыка, так сказать.
Короче, помогите тут. Вот код:

import graphics
import keycapture
import os
import appswitch
def da():
  print ('da')
def net():
  print ('net')
def go():
  img = graphics.screenshot()
  tochka = img.getpixel((119, 84))
#eto tochka koordinat
  while (img ==[(16, 134, 16)]):
#eto, opredelaem cvet(?
    if (tochka ==[(16, 134, 16)]):
#eto, esli cvet sovpal to(?
       da()
    if not (tochka ==[(16, 134, 16)]):
#eto, esli cvet ne sovpal to(?
       net()
go()
Вобщем надо чтоб в указаной точке находился указаный цвет, если да, то принт да.
Если же цвет не тот, то тогда принт нет. Вот, как то так.. Растолкуйте пожалуйста, Спасибо

Отредактировано FishHook (Окт. 1, 2013 08:30:17)

Офлайн

#2 Окт. 1, 2013 16:06:45

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Растолкуйте плс

1. Что за модуль graphics?
2. Делать скриншот всего экрана неэффективно.
3. Здесь while приведет к бесконечной печати “da”.
4. У if есть else.



Офлайн

#3 Окт. 1, 2013 16:09:11

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Растолкуйте плс

Вариант программы с использованием PyQt:

import time
import PyQt4.QtGui
qt_app = PyQt4.QtGui.QApplication([])
def get_pixel(x, y):
    desktop_id = PyQt4.QtGui.QApplication.desktop().winId()
    return PyQt4.QtGui.QPixmap.grabWindow(desktop_id, x, y, 1, 1).toImage().pixel(0, 0) & 0xFFFFFF
def main():
    # Convert color (16, 134, 16) to int
    req_color = (16<<16) + (134<<8) + 16
    if get_pixel(119, 84) == req_color:
        print "yes!!"
    else:
        print "no"
main()



Офлайн

#4 Окт. 1, 2013 17:23:45

Rejejej
Зарегистрирован: 2013-10-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Растолкуйте плс

Agalen, да while будет делать скрины, просто там еще будет стоять слип на время проверки точки. И еще, скрины будут менятся, после каждой проверки. И вот нужно как то это правильно организовать.. Не, тут надо именно без qпитона, спасибо тебе что хоть чуть объяснил.

Офлайн

#5 Окт. 2, 2013 10:44:38

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Растолкуйте плс

Есть разные способы получить точку с экрана. См.: http://rosettacode.org/wiki/Color_of_a_screen_pixel
Если нужно в цикле, то получть значение цвета нужно внутри while, а не как в твоем примере.



Офлайн

#6 Окт. 2, 2013 12:10:54

Rejejej
Зарегистрирован: 2013-10-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Растолкуйте плс

Agalen, вы не могли бы показать как это сделать внутри while? Спасибо за ответы.

Офлайн

#7 Окт. 2, 2013 12:30:02

Rejejej
Зарегистрирован: 2013-10-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Растолкуйте плс

Все! Разобрался. Спасибо за подсказки. Просто скрипт не успевал обработку скрина, поставил слип и все заработало. def go():
e32.ao_sleep(2)
img = graphics.screenshot()
tochka = img.getpixel((x, y))
while (tochka =:
#da esli while veren

print'da'

#ne obhodit while esli on ne vernyi
print'ne'
go()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version