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