Ошибка TypeError: cannot unpack non-iterable bool object

Причем тут это? :thinking: Вы ж вызывали уже get_clipboard тут.

А в той строке, из-за которой эта ошибка

в оригинале ж и было как я говорил

Самой бы знать причём тут

word = get_clipboard()

Но для чего-то он нужен…
я пробовала искать в интернете ответы на свой вопросы/
Узнать откуда происходит ошибка

Traceback (most recent call last):
  File "C:\Users\User\PycharmProjects\spellchecer\spellchecer.py", line 32, in <module>
    params = {'text': get_clipboard(), 'lang': LANG_TRANS[get_layout()]}
KeyError: ''

Почему-то ему не нравиться это строка…

Я не про это, я просто не понял почему вдруг возник вопрос

Для этого нужно импотирвать модуль clipboard?


Похоже get_layout вернул пустую строку.

У вас какая ОС? setxkbmap, xsel и т.д. это Линуксовые утилиты.

Если нужно из буфера обмена данные брать, то можно эту библиотеку взять pyperclip · PyPI

Ну а вместо LANG_TRANS[get_layout()] можно пока просто написать 'en' или 'ru'.

Вопрос был отправлен в пустоту. В интернете посмотрела и подумала что нужно модуль скачивать. После поняла что это разное и к коду они не имеют никакого значения.

У вас какая ОС? setxkbmap , xsel и т.д. это Линуксовые утилиты.

Вот в чём дело! У меня Windows 10.

А какие нужны утилиты для моей OC

Для буфера обмена лучше взять крассплатформенную библиотеку

Для определения языка по текущей раскладке клавиатуры — хз, я б не делал так сложно, просто ввести как-нибудь (input(), …) 'en' или 'ru' или пока просто в коде написать одно из них. Вам же все равно в итоге наверно надо какое-то другое поведение программы, а не так как автор этой программы хотел.

Я попробую, спасибо за помощь))

Здравствуйте, я тут попробовала и вроде как все получается, хотелось бы чтобы вы проверили.

def get_layout():
    """ Get current keyboard layout """

    pipe = Popen(input(),'ru')
    layout = pipe.communicate()[0].strip().decode("utf-8")
    return str(layout)

вышло вот так. Правильно ли я вас поняла?

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

def set_clipboard(text):
    """ Set system clipboard to text """

    pyperclip.copy('')
    print(pyperclip.paste()(bytes(text, 'utf-8')))

И по каким-то причинам от данной строки

def get_clipboard():
    """ Get text from system clipboard """

    return os.popen('xlex').read()

выходит такая ошибка. Можете пожалуйста подсказать что я делаю не так?

Так по поводу xsel было же, выше:

P. S.
И ‘xlex’ не ‘xsel’

Что-то странное.

Я имел в виду например

print('Enter language (en or ru):')
lang = input()
params = {'text': get_clipboard(), 'lang': lang}

или просто

lang = 'ru'

в смысле?

xsel(1): change X selection - Linux man page
https://ostechnix.com/access-clipboard-contents-using-xclip-and-xsel-in-linux/

В смысле вот:

Раз есть pyperclip, то

    return pyperclip.paste()

Спасибо!
А как понять что означает данная ошибка?

"C:\Users\User\PycharmProjects\spellchecer\ok.png" �� ���� ����७��� ��� ���譥�
��������, �ᯮ��塞�� �ணࠬ��� ��� ������ 䠩���.

Что-то подобное не раз выскакивает, не понятно что это значит. Вы когда-нибудь с нечто подобным сталкивались?

Использовать линукс/макос или английскую винду ))
В cmd винды с кодировками разные сложности. Возможно поможет запуск без PyCharm напрямую из cmd, что-то типа python myprogram.py.

Выше

скорее всего написано, что программа xsel не найдена. Похоже тут то же самое, только вместо имени программы почему-то передан путь картинки.

А как это сделать? Может есть видео где это показывают? И что такое
python myprogram.py .? оно наверное как-то помогает выполнить программу?

Наверно для начала надо освоить основы cmd :slight_smile:

Это вызов программы python с параметром myprogram.py (имя файла вашей программы), что должно выполнить питоновскую программу.

Но в зависимости от способа установки питона и библиотек возможно надо запускать как-нибудь по-другому, например, сначала активировать venv/pipenv/poetry/…

Думаю во многих курсах по основам питона в начале показывают как запускать из cmd.

Как вариант еще может поможет Пример создания GUI приложения на Python. PySide2, Poetry, PyCharm

А как можно создать простую программу которая будет проверять орфографию на Python?

Так а сейчас какая проблема с этой? С pyperclip и без определения языка по раскладке клавиатуры по идее должно работать.

Вот честно, моих мозгов не достаточно чтобы понять как все работает. Я всего лишь хотела создать простую программу с интерфейсом и проверкой орфографий…

Ну простая программа это и есть то, что тут.

Без всякой фигни про буфер обмена и раскладку клавиатуры (просто консольный ввод и вывод):

import requests


def check_text(text, lang):
    params = {'text': text, 'lang': lang}
    r = requests.get('https://speller.yandex.net/services/spellservice.json/checkText', params = params)

    if r.status_code != 200:
        raise Exception('HTTP error. {} {}'.format(r.status_code, r.text))

    if len(r.json()) == 0:
        return {}

    return {it['word']: it['s'] for it in r.json()}


if __name__ == '__main__':
    print('Enter text:')
    text = input()
    print('Enter language (en, ru):')
    lang = input()

    result = check_text(text, lang)
    if not result:
        print('OK')
    else:
        print('Mistakes:')
        for (word, suggestions) in result.items():
            print('{}. Suggestions: {}'.format(word, ', '.join(suggestions)))

image

Для графического интерфейса надо изучать Tkinter или Qt (PySide2 или PyQt).