Ce qui suit ne parvient pas à imprimer un hashtag?
import pyautogui pyautogui.typewrite('#');
Il imprime «~».
3 Réponses :
Pyautogui dépend de la disposition du clavier.
Vous pouvez essayer de changer la disposition de votre clavier vers la disposition de clavier américaine (sur laquelle est basé Pyautogui). Par exemple, la disposition du clavier franco-canadien a un #
où se trouve normalement la touche ~
, ce qui pourrait expliquer pourquoi vous rencontrez ce comportement.
Je dois pouvoir le faire sans avoir à changer la disposition de mon clavier du Royaume-Uni vers les États-Unis à chaque fois.
Il est surprenant que l'utilisation de pyautogui.hotkey ('shift', '#'); génère toujours ~ .Est-il possible de sortir unicode? Comment?
Que se passe-t-il avec ce qui suit? >>> pyautogui.keyDown ('#'); ~ >>> ~ #################### KeyboardInterrupt En cours d'exécution à nouveau j'obtiens: >>> pyautogui.keyDown ('#'); >>> #################### KeyboardInterrupt Non ~ cette fois. Si je lance ensuite typewrite ('#'), il n'imprime rien, mais la deuxième fois, il imprime ~ >>> pyautogui.typewrite ('#'); >>> pyautogui.typewrite ('#'); ~ >>> ~
Exécution de 'pyautogui.typewrite (' Hello world! # '); impression('#');' imprime «Bonjour tout le monde! ~ # '
Comme l'a dit Sean Kennedy, c'est un problème de disposition du clavier. Ils travaillent toujours sur la prise en charge des dispositions de clavier non anglo-américaines.
https://github.com/asweigart/pyautogui/issues/137
Heureusement, vous avez une disposition de clavier en anglais, vous aurez donc beaucoup moins de problèmes et vous devriez pouvoir les corriger. Vous pouvez redéfinir si certaines touches doivent être décalées ou non en modifiant _pyautogui_win.py
:
def _keyDown(key): if key not in keyboardMapping or keyboardMapping[key] is None: return needsShift = pyautogui.isShiftCharacter(key) # insert this code, exactly here: if key == '#': needsShift = False if key == '+': needsShift = False if key == '<': needsShift = False #print(key,needsShift) #####debug # continue
Tiré de: https://github.com/asweigart/pyautogui/issues/46#issuecomment-132640299
Je n'ai pas regardé le code moi-même, mais vous constaterez peut-être que vous êtes meilleur ou pire en effectuant la modification dans isShiftCharacter
.
J'aurais dû continuer à lire. isShiftCharacter peut devenir un terrier de lapin:
À propos: la suppression de #, +, <dans la fonction suivante n'a PAS fonctionné (util.py dans. \ Pyautogui):
def isShiftCharacter (character): retourne character.isupper () ou character in '~! @ # $% ^ & * () _ + {} |: "<>?'
Peut-être que .isupper () considère ces caractères comme supérieurs? Je n'ai pas vérifié plus loin
Le plus excellent! Linux, donc dû éditer '_pyautogui_x11.py'. Mais travaille maintenant.
Je pense que cela peut être une alternative si pyautogui
ne fonctionne pas pour #
, etc.
import keyboard keyboard.write('#')