Уведомления

Группа в Telegram: @pythonsu

#1 Июль 2, 2012 20:59:19

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Не пойму работу со словарем

Есть переменная ,возвращает дату,время, есть словарь ,в котором указаны клавиши и коды к ним,

keys = [0,1,2, 3,4, 5,6, 7,8, 9,]
values = [48,49,50,51,52,53,54,55,56,57]
dictionary = dict(map(None, keys, values))
Бьюсь над тем, что не получается из переменной дата,сопоставить цифры со значениями в словаре и отработать нажатия клавиш
win32api.keybd_event(ert,0,0,0)

то пробелы печатал ,теперь вообще запутался…делал итерацию по переменной с датой и пытался значение найти в словаре и передать в win32api….подскажите как осуществить

Офлайн

#2 Июль 2, 2012 21:47:16

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Не пойму работу со словарем

Про словарь ничего не понял.

Вы хотите отправить нажатие клавиши?
Там, по-моему, нужно KEYUP еще посылать. Вот, давно писал:

class WinKeyboard(object):
    """ Windows keybord events"""
 
    def is_key_pressed(self, key):
        return (win32api.GetKeyState(key) & 0x8000)
        
    def is_combo_pressed(self, combo_keys):
        """Checks if combination of combo_keys is pressed simultaneously"""
        for code in combo_keys:
            if not self.is_key_pressed(code):
                return False
        return True
     
    def press(self, key):
        """ Generates key press """
        win32api.keybd_event(key, 0, 0, 0)
        time.sleep(0.1)
        win32api.keybd_event(key, 0, win32con.KEYEVENTF_KEYUP, 0)

Отредактировано reclosedev (Июль 2, 2012 21:49:30)

Офлайн

#3 Июль 2, 2012 21:54:33

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Не пойму работу со словарем

reclosedev
Про словарь ничего не понял.

Вы хотите отправить нажатие клавиши?
Там, по-моему, нужно KEYUP еще посылать. Вот давно еще писал:
class WinKeyboard(object):
    """ Windows keybord events"""
 
    def is_key_pressed(self, key):
        return (win32api.GetKeyState(key) & 0x8000)
        
    def is_combo_pressed(self, combo_keys):
        """Checks if combination of combo_keys is pressed simultaneously"""
        for code in combo_keys:
            if not self.is_key_pressed(code):
                return False
        return True
     
    def press(self, key):
        """ Generates key press """
        win32api.keybd_event(key, 0, 0, 0)
        time.sleep(0.1)
        win32api.keybd_event(key, 0, win32con.KEYEVENTF_KEYUP, 0)

Допустим дата
now_time = datetime.datetime.now() # Текущая дата со временем

vk=now_time.strftime("%d.%m.%Y %I:%M")r
словарь
dictionary={0: 48, 1: 49, 2: 50, 3: 51, 4: 52, 5: 53, 6: 54, 7: 55, 8: 56, 9: 57}
открываем блокнот
rty=subprocess.Popen (r"notepad.exe")
и печатаем дату в блокноте имитируя нажатия клавиш по кодам в словаре…вот
for i in vk:
for key, value in dictionary.items():


if int(i)==key:
ert=dictionary.get(key)
win32api.keybd_event(ert,0,0,0)
win32api.keybd_event(ert,0,win32con.KEYEVENTF_KEYUP,0)
time.sleep(0.1)
В принципе ,если в дате нет точек и знаков,то все нормально,но так некрасиво без формата

Отредактировано sanodin (Июль 2, 2012 22:48:40)

Офлайн

#4 Июль 2, 2012 23:42:26

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

Не пойму работу со словарем

Ой, словарем вы пользуетесь ужасно. Посмотрите в сети(лучше всего в оф. документации) примеры его использования.
Конкретно в данной задаче можно обойтись без него:

...
for char in vk:
win32api.keybd_event(ord(char), 0, 0, 0)
win32api.keybd_event(ord(char), 0, win32con.KEYEVENTF_KEYUP, 0)
...

З.Ы. пишу с телефона, поэтому могут быть очепятки



Офлайн

#5 Июль 2, 2012 23:49:10

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Не пойму работу со словарем

GaiveR
Ой, словарем вы пользуетесь ужасно. Посмотрите в сети(лучше всего в оф. документации) примеры его использования.
Конкретно в данной задаче можно обойтись без него:

...
for char in vk:
win32api.keybd_event(ord(char), 0, 0, 0)
win32api.keybd_event(ord(char), 0, win32con.KEYEVENTF_KEYUP, 0)
...

З.Ы. пишу с телефона, поэтому могут быть очепятки

Спасибо,работает….форматировать под себя уже буду,век живи-век учись….(а все равно дураком помрешь)

Офлайн

#6 Июль 2, 2012 23:53:08

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Не пойму работу со словарем

for i in vk:
    for key, value in dictionary.items():
            if int(i)==key:
                ert=dictionary.get(key)

Это сильно :)

В отрыве от задачи:
>>> for i in vk:
...     if int(i) in dictionary:
...         do_something()
...         
>>> for i in vk:
...     try:
...         ert = dictionary[int(i)]
...         do_something()
...     except:
...         pass
...
>>> for key in filter(lambda x: x in dictionary, vk):
...     do_something()



Отредактировано fata1ex (Июль 2, 2012 23:54:55)

Офлайн

#7 Июль 3, 2012 00:16:10

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Не пойму работу со словарем

Да,спасибо….и такой вариант подходит,завтра доработаю…

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version