Найти - Пользователи
Полная версия: Не пойму работу со словарем
Начало » Python для новичков » Не пойму работу со словарем
1
sanodin
Есть переменная ,возвращает дату,время, есть словарь ,в котором указаны клавиши и коды к ним,
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….подскажите как осуществить
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)
sanodin
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)
В принципе ,если в дате нет точек и знаков,то все нормально,но так некрасиво без формата
GaiveR
Ой, словарем вы пользуетесь ужасно. Посмотрите в сети(лучше всего в оф. документации) примеры его использования.
Конкретно в данной задаче можно обойтись без него:

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

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

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

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

Спасибо,работает….форматировать под себя уже буду,век живи-век учись….(а все равно дураком помрешь)
fata1ex
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()
sanodin
Да,спасибо….и такой вариант подходит,завтра доработаю…
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