1

Тема: Проблеми при запуску команди по скороченню python

Доброго всім часу народ! Вирішив написати скріпт на пітоні який при запусканні по шоткату буде робити транскрипцію, наприклад: ghbdsn cdsn = привіт світ і типу того. Я його зробив, та в самому проекті він працює, і те що виділене копіює, і перероблює та вставляє. Проте, варто мені запустити той самий код проте скороченням, нічого не закидається до буферу обміну.
тобто до буферу те що виділено копіюється, проте нічого не закидається

import PySimpleGUI as gui
import json
from time import sleep as slp
from pyautogui import hotkey
from pyperclip import paste, copy

list_lang = ["eng", "ukr", "dvorak"]

layout = [
    [gui.Combo(values=(list_lang), size=(10,1), default_value=(list_lang[0])),
     gui.Combo(values=(list_lang), size=(10,1), default_value=(list_lang[1]))],
    [gui.Button("Transcript")]
]

hotkey('ctrl', 'c')
window = gui.Window("transcript", layout)

while True:
    event, lang = window.read()
    if event in (None, "Transcript"):
        print(lang[0], lang[1])
        break

window.close()

with open("languages.json", "r") as f:
    data = f.read()

_lang = json.loads(data)
fr = _lang[lang[0]]
to = _lang[lang[1]]

slp(0.5)
inp = paste()
out = ""

for i in range(0, len(inp)):
    ch = (inp[i])
    if ch in fr:
        out = out + to[fr.index(ch)]
    else:
        out = out + inp[i]

copy(out)

hotkey('ctrl', 'v')

Та ось JSON звідки витягується сама розкладка:

{
  "eng" : "`1234567890-=qwertyuiop[]\\asdfghjkl;'zxcvbnm,./~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?",
  "ukr" : "'1234567890-=йцукенгшщзхїґфівапролджєячсмитьбю.ʼ!\"№;%:?*()_+ЙЦУКЕНГШЩЗХЇҐФІВАПРОЛДЖЄЯЧСМИТЬБЮ,",
  "dvorak" : "$&[{}(=*)+]!#;,.pyfgcrl/@aoeuidhtns-\\'qjkxbmwvz~%7531902468`:<>PYFGCRL?^AOEUIDHTNS_|AOEUIDHTNS_|"
}

Якщо є хтось хто може допомогти з цим, прошу, допоможіть. Додатково можу сказати те, що коли код був простіше, а саме:

# required commands in terminal
#
# sudo apt-get install xclip
# pip install pyautogui
# pip install pyperclip
#
# ------------------------------

from pyautogui import hotkey
from pyperclip import paste, copy


def get_char(ch):
    return {
        'q': 'й', 'Q': 'Й',
        'w': 'ц', 'W': 'Ц',
        'e': 'у', 'E': 'У',
        'r': 'к', 'R': 'К',
        't': 'е', 'T': 'Е',
        'y': 'н', 'Y': 'Н',
        'u': 'г', 'U': 'Г',
        'i': 'ш', 'I': 'Ш',
        'o': 'щ', 'O': 'Щ',
        'p': 'з', 'P': 'З',
        '[': 'х', '{': 'Х',
        ']': 'ї', '}': 'Ї',
        '\\': 'ґ', '|': 'Ґ',
        'a': 'ф', 'A': 'Ф',
        's': 'і', 'S': 'І',
        'd': 'в', 'D': 'В',
        'f': 'а', 'F': 'А',
        'g': 'п', 'G': 'П',
        'h': 'р', 'H': 'Р',
        'j': 'о', 'J': 'О',
        'k': 'л', 'K': 'Л',
        'l': 'д', 'L': 'Д',
        ';': 'ж', ':': 'Ж',
        "'": 'є', '"': 'Є',
        'z': 'я', 'Z': 'Я',
        'x': 'ч', 'X': 'Ч',
        'c': 'с', 'C': 'С',
        'v': 'м', 'V': 'М',
        'b': 'и', 'B': 'И',
        'n': 'т', 'N': 'Т',
        'm': 'ь', 'M': 'Ь',
        ',': 'б', '<': 'Б',
        '.': 'ю', '>': 'Ю',
        '/': '.', '?': ','
    }.get(ch, ch)


hotkey('ctrl', 'c')
inp = paste()
out = ''

for i in range(0, len(inp)):
    out = out + get_char(inp[i])
copy(out)

hotkey('ctrl', 'v')

все працювало. Навіть по скороченню.

2 Востаннє редагувалося leofun01 (15.03.2023 04:25:52)

Re: Проблеми при запуску команди по скороченню python

kisirai написав:

запустити той самий код проте скороченням, нічого не закидається
...
по скороченню

Що є скорочення ?

Якщо стартуєш script'ом або symlink'ом, то див."робоча директорія" ("working directory").

kisirai написав:
open("languages.json", "r")

Тут варто поправити. Я би почав з os.path

open(os.path.join(os.path.dirname(__file__), 'languages.json'), 'r')
Подякували: kisirai, dot2

3

Re: Проблеми при запуску команди по скороченню python

Дякую!
Після цієї заміни:

leofun01 написав:

Тут варто поправити. Я би почав з os.path

open(os.path.join(os.path.dirname(__file__), 'languages.json'), 'r')

все запрацювало. В мене була догадка що все через шлях до файлу, і те, що можливо це через те що програма в шоткаті не бачить json файлу. А запуск з шоткату я реалізував так:
transcript.txt:

[Desktop Entry]
Type=Application
Terminal=false
Name=Transcription
Exec=/usr/bin/python3 /home/kisirai/Projects/Pythonblat/Transcriptor/transcript.py
Icon= /home/kisirai/Projects/Pythonblat/Transcriptor/img.png

та 2 команди в терміналі відкритому в тій ж папці що і файл пайтона:

cp transcript.txt transcript.desktop
cp transcript.desktop ~/.local/share/applications/

Тепер все працює корректно. Залишу ще посилання на github мого невеличкого проекту:
https://github.com/Poultergeist/Transcriptor_

Подякували: leofun011

4

Re: Проблеми при запуску команди по скороченню python

Забув вказати що ще шоткат необхідно буде додати в налаштуваннях плазми(в мене стоїть linux Kubuntu 22.10)
Тепер гадаю кожен зможе без проблем цим користуватись)