LINUX.ORG.RU

Сообщения baobab

 

PyQt6 под wine

Всем привет!

У кого-нибудь есть опыт запуска PyQt6 под wine?

Делаю сборки своего пет-проекта для Linux и Windows. Винды нет, собираю под wine. Python + Qt5 собиралось нормально, но после миграции на PyQt6 я не могу не то что собрать работающую программу, но и запустить ее даже в Python, получаю следующую ошибку:

0009:err:combase:RoGetActivationFactory Failed to find library for L""

abnormal program termination

При этом import PyQt6 и import PyQt6.QtWidgets в питоновской консоли работает, но любое демо-приложение на Qt6 выдает ошибку выше.

В Linux те же демо-приложения работают без проблем.

Wine: 5.0.3; Python: 3.11.7; PyQt: 6.6.1; PyInstaller: 6.3.0

Код стандартный:

#https://www.pythonguis.com/tutorials/packaging-pyqt5-pyside2-applications-windows-pyinstaller/
from PyQt6 import QtWidgets

import sys

class MainWindow(QtWidgets.QMainWindow):

    def __init__(self):
        super().__init__()

        self.setWindowTitle("Hello World")
        l = QtWidgets.QLabel("My simple app.")
        l.setMargin(10)
        self.setCentralWidget(l)
        self.show()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    app.exec()

 ,

baobab
()

apt предлагает сделать даунгрейд браузеров

Всем привет!

Подправил sources.list, заменил bullseye на bookworm. Сделал apt-get update && apt-get dist-upgrade, обновил систему. Вроде все хорошо, но когда пытаюсь снова выполнить команду выше, apt предлагает мне сделать даунгрейд chromium и Firefox. Кто-нибудь сталкивался? они что, в bullsyeye новее? Всегда использую стабильную ветку.

 ,

baobab
()

Определить, полностью ли виден текст ячейки QTableView

Всем привет!

Хочу реализовать в QTableView примерно такую же штуку, как в LibreOffice Calc, когда длинный текст не полностью влезает в ячейку, например, как здесь - появляется маленький треугольник, который сообщает пользователю о том, что текст показан не полностью. Не могу понять, как определить, что текст влезает или не влезает в ячейку.

 ,

baobab
()

Ускорить выделение ячейки таблицы мышью

Всем привет!

Изучаю pyqt, перевожу на него свой pet-проект. Нужно создать таблицу и выделять ту ячейку, внутри которой находится указатель мыши.

QTableWidget не подходит, поскольку не поддерживает разное форматирование в одной и той же ячейке. Реализовал через QTextDocument.

Проблема в том, что, когда таблица достигает нескольких сот ячеек, выделение занимает несколько секунд. Как такое реализовать на pyqt5/pyqt6?

Это основная проблема, но есть и другие, которые не смог пока решить:

1) Есть вариант не закрашивать ячейку целиком, а просто менять цвет ее границ. Делается ли такое только для одной ячейки?

2) Как ограничить максимальную высоту ячейки? Есть метод setColumnWidthConstraints, а вот метода setColumnHeightConstraints нет.

Вот примерный код:

#!/usr/bin/python3
# -*- coding: UTF-8 -*-

import sys
import PyQt5
import PyQt5.QtWidgets


class App(PyQt5.QtWidgets.QWidget):
    
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.set_gui()
    
    def set_gui(self):
        self.table = Table()
        self.layout = PyQt5.QtWidgets.QVBoxLayout()
        self.layout.addWidget(self.table)
        self.setLayout(self.layout)
    
    def show(self):
        self.showMaximized()



class Table(PyQt5.QtWidgets.QTextEdit):

    def __init__(self):
        super().__init__()
        self.rowno = 0
        self.colno = 0
        self.set_gui()

    def set_gui(self):
        self.doc = PyQt5.QtGui.QTextDocument()
        self.cursor = PyQt5.QtGui.QTextCursor(self.textCursor())
        self.fmt = PyQt5.QtGui.QTextTableFormat()
        self.table = self.cursor.insertTable(10,10,self.fmt)
        self.fill()
    
    def fill(self):
        for rowno in range(10):
            for colno in range(10):
                cell = self.table.cellAt(rowno,colno)
                self.cursor = cell.lastCursorPosition()
                self.setTextCursor(self.cursor)
                code = '<b>Row</b>: {}. <b>Column</b>: {}'.format(rowno,colno)
                self.cursor.insertHtml(code)
    
    def eventFilter(self,source,event):
        if event.type() == PyQt5.QtCore.QEvent.MouseMove:
            pos = event.pos()
            cursor = self.cursorForPosition(pos)
            cell = self.table.cellAt(cursor)
            if not cell.isValid() or cell.column() == self.colno and cell.row() == self.rowno:
                return super().eventFilter(source,event)
            self.rowno = cell.row()
            self.colno = cell.column()
            self.set_cell_bg(cell,'cyan')
            cell = self.table.cellAt(self.cursor)
            self.set_cell_bg(cell,'white')
            self.cursor = cursor
        return super().eventFilter(source,event)
    
    def set_cell_bg(self,cell,color):
        cell_fmt = cell.format()
        cell_fmt.setBackground(PyQt5.QtGui.QColor(color))
        cell.setFormat(cell_fmt)


if __name__ == '__main__':
    exe = PyQt5.QtWidgets.QApplication(sys.argv)
    app = App()
    exe.installEventFilter(app.table)
    app.show()
    sys.exit(exe.exec_())

 ,

baobab
()

Странности с urllib.request.urlopen

Всем привет!

Есть такой код:

#!/usr/bin/python3
# -*- coding: UTF-8 -*-

import time
import urllib.request

url = 'https://www.multitran.com/m.exe?s=working%20documentation&l1=1&l2=2&SHL=2'
start = time.time()

code = urllib.request.urlopen(url,data=None,timeout=6).read()

delta = float(time.time()-start)

mes = 'The operation has taken {} s.'.format(delta)
print(mes)

У меня уже есть готовая программа, которая работает аналогичным образом, и внезапно стали появляться лаги. Выяснилось, что проблема с timeout. Если поставить timeout в 1с, будет завершаться за 1с, 3с - за 3с, 30с - за 21с. До этого timeout работал как ему и положено - отдавал результат максимально быстро, а при таймауте прекращал попытки через timeout секунд. Сейчас же, грубо говоря, сколько timeout поставишь, столько и будешь ждать.

Кто-нибудь знает, в чем дело?

 ,

baobab
()

Чтение проприетарных форматов и лицензионные проволочки

Привет всем!

Подскажите, пожалуйста, имеет ли разработчик СПО юридическое право встраивать в свои программы код, читающий проприетарные форматы? Предположим, что самих файлов разработчик не распространяет, однако чтение форматов запрещено лицензией проприетарной программы.

Вот, например, выдержка из лицензии (что запрещено):

Деассемблировать, декомпилировать (преобразовывать объектный код в исходный текст ПО (включая программы, базы данных (в том числе Словари) и другие компоненты ПО), за исключением случаев и только в объеме, явным образом разрешенном применимым законодательством. Если применимое законодательство разрешает подобные действия, любая информация, полученная таким способом, не должна раскрываться третьим лицам, если только такое раскрытие не предусмотрено применимым законодательством, и должна быть немедленно сообщена Компании ABBYY. Вся такая информация является конфиденциальной и принадлежит Компании ABBYY.

Могу ли я встроить поддержку словарей Lingvo в свою прогу? Фактически, пользователь получит возможность скопировать текст словарных статей.

Есть еще одна проприетарная прога со своими бинарными словарями, но у нее вообще лицензии нет. А с ней что можно или нельзя?

 , ,

baobab
()

Перенос ОС на другое железо

Добрый день!

Возникла проблема при переносе заранее сконфигурированной 64-битной Debian Bullseye на другой ноутбук. На втором ноутбуке 2 раздела с системами - основная, Bullseye 32-битная и для экспериментов, Bullseye 64-битная. Откуда изначально ставился Grub, не помню, вероятно, с 64-битной.

Итак, смонтировал раздел с 64-битной. Перезаписал файлы с помощью rsync -av --delete-before, исправил /etc/fstab, сделал chroot с LiveCD, потом update-initramfs -u. Потом в Bullseye 32-битной сделал grub-install /dev/sda и update-grub. Загружаюсь во вторую систему, сообщается, что в /proc/cmdline прописан неверный rootfs UUID (это действительно так). Правка /proc/cmdline не помогает. Я с этим файлом раньше не работал.

Я где-то напортачил с Grub или в чем-то другом проблема?

 

baobab
()

Скорость Youtube

Привет всем!

У меня в 2 разных местах контент с Youtube грузится со скоростью диалапа, при том что speedtest показывает нормальную скорость. Кто-нибудь сталкивался с таким?

Пользуюсь youtube-dl, но в браузере, насколько могу судить, скорость такая же.


Перемещено xaizek из desktop

 

baobab
()

Есть ли смысл в Apparmor на десктопе?

Всем привет!

Надо ли держать Apparmor на десктопе? Что он реально дает, помимо периодического увеличения времени загрузки системы в 2 раза?

 

baobab
()

Не могу запустить приложение в LiveCD

Всем привет!

Работаю с LiveCD (Knoppix). Скачал приложение, сделал chmod +x, но запустить его не получается:

bash: ./binaries/appimage/appimagetool-x86_64.AppImage: No such file or directory

Сам по себе файл виден:
file ~/binaries/appimage/appimagetool-x86_64.AppImage 
/home/knoppix/binaries/appimage/appimagetool-x86_64.AppImage: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=2b28c9d62013e6b5542a1920e2bcc440fa19b8b1, stripped

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

 ,

baobab
()

Проблема с шифрованием раздела

Всем привет!

Решил воспользоваться cryptsetup, хотя дел с ним до этого не имел. Использовал вот эту инструкцию.
Сначала сделал

e2fsck -f /dev/sda3

успешно. Не понял, как в resize2fs указать размер, по умолчанию там вроде блоки. Уменьшил раздел через gparted. При этом на всякий случай сделал меньше его не на 32Мб, а на 50.
Дальше зашифровал и открыл:
cryptsetup reencrypt --encrypt /dev/sda3 --reduce-device-size 50M
cryptsetup open /dev/sda3 home

Дальше нужно было сделать
resize2fs /dev/mapper/home

но на данном этапе возникла ошибка:
resize2fs /dev/mapper/home 
resize2fs 1.46.2 (28-Feb-2021)
Resizing the filesystem on /dev/mapper/home to 67119360 (4k) blocks.
resize2fs: Attempt to read block from filesystem resulted in short read while trying to resize /dev/mapper/home
Please run 'e2fsck -fy /dev/mapper/home' to fix the filesystem
after the aborted resize operation.

e2fsck -f /dev/mapper/home
e2fsck 1.46.2 (28-Feb-2021)
The filesystem size (according to the superblock) is 67125760 blocks
The physical size of the device is 67119360 blocks
Either the superblock or the partition table is likely to be corrupt!

dmesg указывает следующее:
EXT4-fs (dm-0): bad geometry: block count 67125760 exceeds size of device (67119360 blocks)

Раздел уже превратился в тыкву или еще нет?

 ,

baobab
()

Что-то непонятное с apt-get upgrade

Подскажите, пожалуйста. Изначально у меня был Devuan ASCII. При выходе новых Debian я не ждал обновлений Devuan, а просто подключал дебиановский репозиторий и обновлялся командой:

apt-get update && apt-get -o Dpkg::Options::="--force-confnew" --force-yes -fuy dist-upgrade

Проблем на своем десктопе я не замечал (или же они были минимальные). Сейчас, в принципе, тоже ничего страшного не случилось, когда обновился до bullseye, но при при попытке сделать apt-get upgrade или apt-get dist-upgrade мне сообщается, что libaom0 будет заменен на старую версию и

W: Противоречивый выпуск: http://deb.debian.org/debian stable-backports InRelease (ожидался stable-backports, но получен bullseye-backports)

Содержимое sources.list.

 , ,

baobab
()

Вопрос к хорошо знающим LibreOffice

Всем привет!

Сконвертировал документ, созданный в Word 2007, из docx в odt. Редактирую в LibreOffice, создал новые стили. Заметил, что LibreOffice даже наследует баги, специфичные для Word.

Например, я создал стиль для описания гиперссылки (Liberation Serif, 12). Когда пытаюсь применить этот стиль, шрифт гиперссылки сбрасывается на Times New Roman 14 (был по умолчанию в Word). Причем это происходит не всегда, а только если гиперссылка начинается с новой строки. То же самое поведение было характерно для Word, когда я менял гиперссылку.

Или же шрифт нумерации отличается от шрифта текста (шрифт нумерации сбрасывается на Calibri 11, приходится ручками править, причем каждый пункт).

Соответственно, вопрос: можно ли избавиться от багов, специфичных для Word?
И еще один вопрос: есть ли в LibreOffice функция для очистки конфиденциальных/персональных данных, например, удаление автора, старых версий (по-моему, я когда-то сохранял 2 разные версии в одном файле).

 , ,

baobab
()

RSS подписка на новые темы