abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:55 | Nová verze

    KiCad (Wikipedie), sada svobodných softwarových nástrojů pro počítačový návrh elektronických zařízení (EDA), byl vydán v nové major verzi 10.0.0 (𝕏). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    dnes 13:22 | IT novinky

    Letošní Turingovou cenu (2025 ACM A.M. Turing Award, Nobelova cena informatiky) získali Charles H. Bennett a Gilles Brassard za základní přínosy do oboru kvantové informatiky, které převrátily pojetí bezpečné neprolomitelné komunikace a výpočetní techniky. Jejich protokol BB84 z roku 1984 umožnil fyzikálně zaručený bezpečný přenos šifrovacích klíčů, zatímco jejich práce o kvantové teleportaci položila teoretické základy pro budoucí kvantový internet. Jejich práce spojila fyziku s informatikou a ovlivnila celou generaci vědců.

    Ladislav Hagara | Komentářů: 2
    dnes 04:44 | Zajímavý článek

    Firefox 149 dostupný od 24. března přinese bezplatnou vestavěnou VPN s 50 GB přenesených dat měsíčně (s CZ a SK se zatím nepočítá) a zobrazení dvou webových stránek vedle sebe v jednom panelu (split view). Firefox Labs 149 umožní přidat poznámky k panelům (tab notes, videoukázka).

    Ladislav Hagara | Komentářů: 2
    dnes 00:33 | Nová verze

    Byla vydána nová stabilní verze 7.9 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 146. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    dnes 00:11 | Zajímavý software

    Dle plánu byla vydána Opera GX pro Linux. Ke stažení je .deb i .rpm. V plánu je flatpak. Opera GX je webový prohlížeč zaměřený na hráče počítačových her.

    Ladislav Hagara | Komentářů: 5
    včera 19:22 | Nová verze

    GNUnet (Wikipedie) byl vydán v nové major verzi 0.27.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.

    Ladislav Hagara | Komentářů: 0
    včera 04:00 | Bezpečnostní upozornění

    Byly publikovány informace (technické detaily) o bezpečnostním problému Snapu. Jedná se o CVE-2026-3888. Neprivilegovaný lokální uživatel může s využitím snap-confine a systemd-tmpfiles získat práva roota.

    Ladislav Hagara | Komentářů: 4
    včera 03:33 | Zajímavý software

    Nightingale je open-source karaoke aplikace, která z jakékoliv písničky lokálního alba (včetně videí) dokáže oddělit vokály, získat text a vše přehrát se synchronizací na úrovni jednotlivých slov a hodnocením intonace. Pro separaci vokálů využívá UVR Karaoke model s Demucs od Mety, texty písní stahuje z lrclib.net (LRCLIB), případně extrahuje pomocí whisperX, který rovněž využívá k načasování slov. V případě audiosouborů aplikace na

    … více »
    NUKE GAZA! 🎆 | Komentářů: 2
    18.3. 18:22 | Nová verze

    Po půl roce vývoje od vydání verze 49 bylo vydáno GNOME 50 s kódovým názvem Tokyo (Mastodon). Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.

    Ladislav Hagara | Komentářů: 28
    18.3. 17:22 | Nová verze

    Článek na stránkách Fedora Magazinu informuje o vydání Fedora Asahi Remixu 43, tj. linuxové distribuce pro Apple Silicon vycházející z Fedora Linuxu 43.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (11%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1117 hlasů
     Komentářů: 27, poslední 17.3. 19:26
    Rozcestník

    Dotaz: PyQT4 a vlákna

    19.1.2008 14:57 Jirka
    PyQT4 a vlákna
    Přečteno: 476×
    Dobrý den,

    dělám programy, které spolu komunikují přes sockety (klient/server) a klienta jsem se rozhodnul udělat i v grafice. Tak jsem zkusil PyQT4, ale zasekl jsem se na jednom problému:

    V programu musí pořád běžet jedno vlákno (nekonečný cyklus), které přijímá zprávy od serveru. A tyto zprávy pak potřebuji zobrazit v grafice, jenže tam mi to vždycky vyhodí error. Dám sem příklad, který jsem hodně ořezal:
    from PyQt4 import QtCore, QtGui
    import sys
    import threading
    import time
        
    class oknoHlavni:
    
        def __init__(self):
    
            self.klient = klient(self)
    
            ##########################
            ## Hlavni okno programu ##
            ##########################
            
            self.app = QtGui.QApplication(sys.argv)
            self.mainWindow = QtGui.QMainWindow()
            self.mainWindow.setWindowTitle("Moje okno")
            self.mainWidget=QtGui.QWidget(self.mainWindow)
            self.mainWindow.setCentralWidget(self.mainWidget)
            self.layout=QtGui.QGridLayout(self.mainWidget)
    
            #################
            ## WIDGET CHAT ##
            #################
    
            self.widgetChat=QtGui.QWidget(self.mainWidget)
            self.layout.addWidget(self.widgetChat,1,0,1,1)
            
            self.layoutChat=QtGui.QGridLayout(self.widgetChat)
    
            # okno na zpravy - sklo
            self.chatSklo=QtGui.QTextEdit(self.widgetChat)
            self.chatSklo.setReadOnly(True)
            
            # prida objekty do layoutu
            self.layoutChat.addWidget(self.chatSklo,1,0,1,3)
    
            self.obnoveniOkna()
            self.klient.start()
            
    
        def obnoveniOkna(self):
            self.mainWindow.show()       
            
    
        def skloZapisText(self, text):
            print "skloZapisText: ", text
            self.chatSklo.setText(text)   
    
    class klient:
    
        def __init__(self, rodic):
            self.grafika = rodic
        
        def start(self):
            v1 = threading.Thread(target = self.vlakno)
            v1.start()
        
        def vlakno(self):
            print "Vlakno"    
            for i in range(50):
                time.sleep(0.5)
                self.grafika.skloZapisText("Vlakno..."+str(i))
        
        
    grafika = oknoHlavni()
    
    sys.exit(grafika.app.exec_())
    
    Program vypíše:
    Vlakno

    skloZapisText: Vlakno...0

    QObject: Cannot create children for a parent that is in a different thread. Atd...
    Předem díky za rady :-)

    Odpovědi

    okbob avatar 19.1.2008 20:30 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: PyQT4 a vlákna
    Zdar, neco podobneho jsem resil na .NETu. Jde o to, ze s GUI muze primo komunikovat pouze jeden thread. Na .NETu se to resi skrz jakousi proxy.
    Luboš Doležel (Doli) avatar 20.1.2008 02:06 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: PyQT4 a vlákna
    Dělat to takhle je fuj, od čeho jsou sloty/signály.
    22.1.2008 21:19 Jirka
    Rozbalit Rozbalit vše Re: PyQT4 a vlákna
    A mohl bys mi, prosím, ukázat, jak to mám udělal přes ty sloty a signály? Signály a sloty umím použít třeba jen pro stisknutí tlačítka apod.

    Zkusil jsem toto:

    A do druhé třídy (klient) bych dal toto:

    self.grafika(QtCore.SIGNAL("progress(int)"), nejake_cislo)

    Do první třídy (oknoHlavni) bych dal toto:

    self.app.connect(?co sem?, QtCore.SIGNAL("progress(int)"), self.skloZapisText)

    Jenže co mám dát jako první parametr?
    mess avatar 22.1.2008 21:51 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
    Rozbalit Rozbalit vše Re: PyQT4 a vlákna
    Kdyby by ta třída klient dědila od QtCore.QObject, tak by se dal vyvolat vlastní signál přes self.emit. Více tady. A tady máš referenční příručku ke všem PyQt4 třídám.
    Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.
    Luboš Doležel (Doli) avatar 22.1.2008 22:00 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: PyQT4 a vlákna
    class klient : public QThread
    {
    Q_OBJECT
    signals:
        void addText(QString text);
        // atd.
    };
    
    class oknoHlavni : public Q...
    {
    Q_OBJECT
    slots:
        void textReceived(QString text);
    };
    
    // a pak někde
    connect(m_pClient, SIGNAL(addText(QString)), this, SLOT(textReceived(QString)));
    
    // posílání:
    emit addText(nejakyText); // šlo mi snad i bez emit (?)
    
    (Sorry, ale Python fakt ne-e.)
    grubber avatar 22.1.2008 21:37 grubber | skóre: 6 | blog: grubber | Břeclav / Brno
    Rozbalit Rozbalit vše Re: PyQT4 a vlákna
    Kdyz uz to pises s Qt, nebylo by lepsi pro vlakna pouzit QtCore.QThread misto threading.Thread? (strilim od boku, Qt znam jen z C++)
    kozzi avatar 22.1.2008 22:01 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
    Rozbalit Rozbalit vše Re: PyQT4 a vlákna
    Bylo ale tomu nerikej :-D
    Linux je jako mušketýři "jeden za všechny, všichni za jednoho"

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.