0
votes

Le caractère Hashtag ne s'affiche pas correctement

Ce qui suit ne parvient pas à imprimer un hashtag?

import pyautogui
pyautogui.typewrite('#');

Il imprime «~».


0 commentaires

3 Réponses :


1
votes

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.


4 commentaires

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! ~ # '



0
votes

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


1 commentaires

Le plus excellent! Linux, donc dû éditer '_pyautogui_x11.py'. Mais travaille maintenant.



0
votes

Je pense que cela peut être une alternative si pyautogui ne fonctionne pas pour # , etc.

import keyboard
keyboard.write('#')


0 commentaires