• Как сохранить данные из множества полей (объектов) формы QT?

    @Diolorca Автор вопроса
    Спасибо за ответ, очень помогло. Немного переделал под себя.
    attr_types = [QtWidgets.QLineEdit, QtWidgets.QComboBox, QtWidgets.QPlainTextEdit]
            widget_dict = {}
            for i in range(len(attr_types)):
                print('i: ', i)
                lcboxi = [widget for widget in self.ui.__dict__.values() if isinstance(widget, attr_types[i])]
                for item in lcboxi:
                    if i == 0:
                        widget_dict[item.objectName()] = item.text()
                        print(item.objectName(), item.text())
                    elif i == 1:
                        widget_dict[item.objectName()] = item.currentIndex()
                        print(item.objectName(), item.currentIndex())
                    else:
                        widget_dict[item.objectName()] = item.toPlainText()
                        print(item.objectName(), item.toPlainText())
             
            with open(fr'{pathonfile}.json', 'w') as json_file:
                json.dump(widget_dict, json_file, indent=4)
    Написано
  • Как объединить несколько списков в json?

    @Diolorca Автор вопроса
    Огромное спасибо за решение!
  • Как изменить/заменить последний элемент списка?

    @Diolorca Автор вопроса
    Спасибо, я уже сам разобрался)
    Оператор присваивания "=", оказывается не копирует объект, а создаёт новую переменную, которая дублирует ссылку на исходный объект. Видимо поэтому, изменяя новую переменную, менялась и исходная переменная.

    Я сделал так:
    import copy
    
    dokum = 'one, two'
    dokum = dokum.split(',')
    for i in range(len(dokum)):
        dokum[i] = '- '  + dokum[i].lstrip() + ';'
            
    print("Список с ; в конце ", dokum)
    docum_s_dot = copy.copy(dokum)
    docum_s_dot[-1] = docum_s_dot[-1][:-1] + '.'
    
    print("Список с . в конце ", docum_s_dot)
    print("Список с ; в конце ", dokum)


    Список с ; в конце  ['- one;',  '- two;']
    Список с . в конце  ['- one;', ' - two.']
    Список с ; в конце  ['- one;', ' - two;']
  • Как найти текст (выражение) по определенному шаблону?

    @Diolorca Автор вопроса
    Diolorca, Решение такое
    text = []
            for paragraph in document.paragraphs:
                text.append(paragraph.text)
                print('\n'.join(text))
            
            print(re.search(r'\d\d\D\d\d\d\D\d', str(text)))
  • Как найти текст (выражение) по определенному шаблону?

    @Diolorca Автор вопроса
    text = []
            for paragraph in document.paragraphs:
                text.append(paragraph.text)
                print('\n'.join(text))
            
            print(re.search(r'\d\d\D\d\d\d\D\d', text))


    Получаю ошибку TypeError: expected string or bytes-like object

    Я так понял надо, чтобы переменная в которой я ищу паттерн была стринговой? Но как мне тогда найти нужное значение в тексте, если стринг не вместит в себя столько символов
  • Как добавить много изображений в шаблон docx?

    @Diolorca Автор вопроса
    PavelMos, да, все верно. Есть определенная позиция, куда будут вставляться картинки, но картинок всегда разное количество.
  • Как изменить цвет LineEdit при вводе текста?

    @Diolorca Автор вопроса
    Александр Ананьев, про qss это итак яснопонятно. Но вопрос то в другом...
  • Как изменить цвет LineEdit при вводе текста?

    @Diolorca Автор вопроса
    Не могу понять почему у меня не работает.
    Выделяю LineEdit в QT Designer, нажимаю change styleSheet в контекстном меню и вставляю примеры по ссылке. Запускаю форму - не работает.
    Если просто устанавливаю посредством css фон lineEdit, то фон меняется.
  • Как передать путь до файлов скрипту на питоне через контекстное меню windows?

    @Diolorca Автор вопроса
    Попробовал вариант через пункт "Отправить..." (Send To), в принципе работает.
    Запускается один экземпляр скрипта, куда передаются аргументы каждого файла (пути до каждого из выделенных файлов). Не совсем удобно, что нужно искать пункт "отправить...", но в целом это решение вполне неплохое для моих целей.

    Для проверки написал следующий код:
    import time
    from sys import argv
    
    for i in argv[1:]:
        print(i)
    
    time.sleep(100)


    И вот результат при выделении двух файлов и отправки их скрипту:
    C:\Users\Игорь\Pictures\Сканы\Новая папка (3)\2022-01-19-0001.pdf
    C:\Users\Игорь\Pictures\Сканы\Новая папка (3)\2022-01-19-0002.pdf

    Ярлык скрипта я поместил в папку
    C:\Users\Игорь\AppData\Roaming\Microsoft\Windows\SendTo

    Спасибо большое, Ваш совет мне помог)
    Хотелось бы, чтобы не надо было каждый раз заходить в пункт контекстного меню "отправить...", а поместить пункт меню скрипта где-то сверху, но, если это имеет сложного технического решения, то обойдусь и таким способом. Плагин для проводника я точно не напишу)
  • Как передать путь до файлов скрипту на питоне через контекстное меню windows?

    @Diolorca Автор вопроса
    Вот такой получился выхлоп при использовании Вашего кода
    --------------------------------------------------
    Конвертирование файла  C:\Users\Игорь\Pictures\Сканы\Новая папка (3)\2022-01-19-
    0002.pdf
    --------------------------------------------------
    Traceback (most recent call last):
      File "C:\Python\Python38\lib\site-packages\pdf2image\pdf2image.py", line 466,
    in pdfinfo_from_path
        raise ValueError
    ValueError
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "c:\Scripts\pdf2jpg.py", line 62, in <module>
        s.convert_file()
      File "c:\Scripts\pdf2jpg.py", line 39, in convert_file
        pages = convert_from_path(path, self.CONST, poppler_path=self.POPPLER_PATH)
      File "C:\Python\Python38\lib\site-packages\pdf2image\pdf2image.py", line 97, i
    n convert_from_path
        page_count = pdfinfo_from_path(pdf_path, userpw, poppler_path=poppler_path)[
    "Pages"]
      File "C:\Python\Python38\lib\site-packages\pdf2image\pdf2image.py", line 475,
    in pdfinfo_from_path
        raise PDFPageCountError(
    pdf2image.exceptions.PDFPageCountError: Unable to get page count.
    I/O Error: Couldn't open file 'C:\Users\<d0><98><d0><b3><d0><be><d1><80><d1><8c>
    \Pictures\<d0><a1><d0><ba><d0><b0><d0><bd><d1><8b>\<d0><9d><d0><be><d0><b2><d0><
    b0><d1><8f> <d0><bf><d0><b0><d0><bf><d0><ba><d0><b0> (3)': Illegal byte sequence
    .
    
    
    C:\Users\Игорь\Pictures\Сканы\Новая папка (3)>


    Увы, но также запускается два экземпляра скрипта :(