Форум сайта python.su
Учу питон, но по учебникам не могу, и все.
Поэтому делаю все методом тыка, так сказать.
Короче, помогите тут. Вот код:
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)
Офлайн
1. Что за модуль graphics?
2. Делать скриншот всего экрана неэффективно.
3. Здесь while приведет к бесконечной печати “da”.
4. У if есть else.
Офлайн
Вариант программы с использованием 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()
Офлайн
Agalen, да while будет делать скрины, просто там еще будет стоять слип на время проверки точки. И еще, скрины будут менятся, после каждой проверки. И вот нужно как то это правильно организовать.. Не, тут надо именно без qпитона, спасибо тебе что хоть чуть объяснил.
Офлайн
Есть разные способы получить точку с экрана. См.: http://rosettacode.org/wiki/Color_of_a_screen_pixel
Если нужно в цикле, то получть значение цвета нужно внутри while, а не как в твоем примере.
Офлайн
Agalen, вы не могли бы показать как это сделать внутри while? Спасибо за ответы.
Офлайн
Все! Разобрался. Спасибо за подсказки. Просто скрипт не успевал обработку скрина, поставил слип и все заработало. 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()
Офлайн