Portál AbcLinuxu, 26. května 2024 08:25


Dotaz: Pyside2 QtApplication - odložený print

26.12.2023 08:41 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Pyside2 QtApplication - odložený print
Přečteno: 356×
Odpovědět | Admin
Zdravím všechny..

Zase mám takový drobný problém, se kterým si nevím rady. Předem chci říct, že to není problém přímo související s funkčností, ale odpověď jsem na googlu nedostal (nebo neumím položit otázku správně).

Kdysi jsem se tady v blogu ptal na řešení čtečky logu, tak došlo na její upgradování, umí taby (několik otevřených souborů, recent soubory a tak). Při řešení problému singletonu jsem si všiml, že pokud v kódu zadám print (pro rychlou kontrolu, co se děje), vypíše se mi print až po ukončení aplikace (pro psaní kódu i spouštění aplikace používám QTCreator).

qDebug funguje správně, výpisy jsou prováděny ihned, stejně jako logování. Když aplikaci spustím z prostředí (KDE, samo - přiřadil jsem příponě .log moji aplikaci se spuštěním v konzoli /prozatím/ ) tak print funguje správně, ne až po ukončení aplikace.

Som z toho volajaký zmateny. Není to nic, co se nedá obejít třeba qDebug-em, nebo logováním, ale u jiných aplikací mi to neděla, tak nevím, v čem je problém.

Na požádání sem vyplivnu zdroják, ale nemyslím si, že by zdroják nějak osvětlil problém, i když ...

asi klíčové je volání modifikované QApplication:

    QCoreApplication.setAttribute(Qt.AA_ShareOpenGLContexts)
    app = SingleApplicationWithMessaging(arg, f.applicationName)
    setAppAttributes(app)
    if app.isRunning():
        m = 'app is already running, no message sent'
        print(m)
        if len(arg) > 1:
            m = arg[1]
        app.sendMessage(m)
        sys.exit()

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Milan Uhrák (tazatel))
26.12.2023 09:26 X
Rozbalit Rozbalit vše Re: Pyside2 QtApplication - odložený print
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dej print parametr 'flush=True' a mohlo by to vypisovat hned.
26.12.2023 13:04 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: Pyside2 QtApplication - odložený print
Díky, to tvé řešení funguje ... ale nemůžu přijít na to, proč pokusný projekt ( se zkoušením sigletonu - takže v podstatě hodně podobný kód ) print tiskne okamžitě, a tenhle ne ... ale to už není otázka pro vás, zkusím to vyřešit sám, ale je to divné ..

A moc děkuji za navedení

Milan
26.12.2023 17:53 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: Pyside2 QtApplication - odložený print
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příloha:
Aha ... podle vzoru (návodu) jsem aplikaci spouštěl přes "launcher" bez koncovky "py". Takže jsem ji musel do spuštění QtCreatoru přidat ručně, tím se zrušili (asi) některé vlastnosti spouštění a tím byl i nebufferovaný výstup. A i když jsem pak vše (po nápovědě X) poprvé nastavil správně (přidal jsem koncovku k "launcher" atd) změny se projevily až při dalším spuštění QtCreatotu, a proto jsem si říkal kde je rozdíl ? a ono až po znovuspušění. To mě pleskla přes oči i volba "buffered output"... Takže záhada vyřešena. X děkuji za nasměrování M.
26.12.2023 19:03 X
Rozbalit Rozbalit vše Re: Pyside2 QtApplication - odložený print
Pohoda. Pekny novy rok.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.