Найти - Пользователи
Полная версия: Растолкуйте плс
Начало » Центр помощи » Растолкуйте плс
1
Rejejej
Учу питон, но по учебникам не могу, и все.
Поэтому делаю все методом тыка, так сказать.
Короче, помогите тут. Вот код:

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()
Вобщем надо чтоб в указаной точке находился указаный цвет, если да, то принт да.
Если же цвет не тот, то тогда принт нет. Вот, как то так.. Растолкуйте пожалуйста, Спасибо
agalen
1. Что за модуль graphics?
2. Делать скриншот всего экрана неэффективно.
3. Здесь while приведет к бесконечной печати “da”.
4. У if есть else.
agalen
Вариант программы с использованием 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()
Rejejej
Agalen, да while будет делать скрины, просто там еще будет стоять слип на время проверки точки. И еще, скрины будут менятся, после каждой проверки. И вот нужно как то это правильно организовать.. Не, тут надо именно без qпитона, спасибо тебе что хоть чуть объяснил.
agalen
Есть разные способы получить точку с экрана. См.: http://rosettacode.org/wiki/Color_of_a_screen_pixel
Если нужно в цикле, то получть значение цвета нужно внутри while, а не как в твоем примере.
Rejejej
Agalen, вы не могли бы показать как это сделать внутри while? Спасибо за ответы.
Rejejej
Все! Разобрался. Спасибо за подсказки. Просто скрипт не успевал обработку скрина, поставил слип и все заработало. 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()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB