Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Topics - n3c0

Pagine: [1]
1
Base / Distribuire le proprie applicazioni
« il: Aprile 03, 2017, 13:49 »
Salve a tutti, lo so che dal titolo direte: ma si è parlato mille volte di questo argomento, ma io non ne vengo a capo, perdonate la mia inesperienza....Ho provato a cercare, ma non ho trovato risposte "aggiornate"...

L'obiettivo ovviamente è quello di creare un exe per far partire la propria applicazione anche su altri pc (windows), preciso che ho scritto il codice su windows e che dall'IDLE funziona tutto.

Primo problema: Ho provato Pyinstaller, ma incappo in questo errore "IndexError: tuple index out of range".
Secondo: Ho cercato delle alternative, ma non ho trovato altri "compilatori" (se così li possiamo chiamare), compatibili con python 3.6...
Terzo: C'è un modo per proteggere il codice sorgente? Cioè nasconderlo e non poterlo "risalire"?

Grazie a tutti

2
PyQT / Qtimer, come usarlo nella GUI?
« il: Marzo 29, 2017, 14:35 »
Salve a tutti,
avendo tempo libero ed avendo l'esigenza di svilupparmi un piccolo programmino ho deciso, da profano della programmazione, di cominciare ad imparare un linguaggio di programmazione. Ho scelto Python perché leggendo in giro ho appreso che è "semplice", molto utilizzato e pertanto con una ricca community che può correre in soccorso in caso di aiuto...ed infatti non c'è voluto molto affinché dovessi ricorrere all'aiuto degli esperti.

Il problema principale che ho dovuto affrontare è stata la GUI, ho iniziato con Tkinter, ma ho scoperto prestissimo a mie spese che è molto "macchinoso", pertanto leggendo guide e tutorial ho deciso di passare all'accoppiata QT - Pyqt. Devo dire che realizzare la GUI in grafica e mettere mano sul codice generato è sicuramente più semplice!

Veniamo al sodo ho creato una finestra con due label ed un bottone. Il bottone incrementa un contatore che viene mostrato in una label, mentre l'altra label mostra un'immagine. Ok e dov'è il problema?
Il problema sta nel fatto che vorrei far mutare l'immagine ogni tot secondi.
Ho provato tantissime soluzioni, che prese singolarmente funzionano tutte, ma come le applico alla GUI mi creano problemi ed errori. Il problema è certamente la mia poca conoscenza ed esperienza in materia....
Ho letto da qualche parte che potrei utilizzare Qtimer, l'ho installato ed ho letto le reference, ma onestamente non ci ho capito molto....

Qualche anima pia vuol dare un'occhiata al mio codice e dirmi dove sbaglio? Grazie mille

P.S. nel codice non ho implementato ancora Qtimer, mi sono fermato alla soluzione con i threading...



# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'C:UsersennetDesktoptest pythonEliminacodauiEliminacoda.ui'
#
# Created by: PyQt5 UI code generator 5.8.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
import time, threading, os, random

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(452, 448)
        Form.setAutoFillBackground(False)
        self.verticalLayout = QtWidgets.QVBoxLayout(Form)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label_2 = QtWidgets.QLabel(Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
        self.label_2.setSizePolicy(sizePolicy)
        self.label_2.setText("")
        self.label_2.setPixmap(QtGui.QPixmap(foto))
        self.label_2.setScaledContents(True)
        self.label_2.setObjectName("label_2")
        self.verticalLayout.addWidget(self.label_2)
        self.label = QtWidgets.QLabel(Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        self.label.setText("")
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setText("PushButton")
        self.pushButton.setObjectName("pushButton")
        self.verticalLayout.addWidget(self.pushButton)

        self.retranslateUi(Form)
        self.pushButton.clicked.connect(self.on_PB)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))

    def on_PB(self, Form):
        global contatore
        if contatore < 99:
            contatore += 1
        else:
            contatore = 1
           
        self.label.setText(str(contatore))
        print (contatore)

    def random_foto(self, Form):
        self.label_2.setPixmap(QtGui.QPixmap(foto))
        print("pronto?!")
        threading.Timer(4, random_foto).start()

   


foto = str('C:\foto\'+random.choice(os.listdir('C:\foto')))
self.label_2.setPixmap(QtGui.QPixmap(foto))
print(foto)
threading.Timer(4, print(foto)).start()
contatore=0


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())
   


Pagine: [1]