Profilo di Triestin

Nome Triestin
Indirizzo email n/a
Messaggi19
  • Re: Doppia shell
    Forum >> Principianti
    Grazie per la risposta.

    A questo punto però, in merito a TKinter, che sto provando, mi serve una dritta




    Creata la maschera principale, con tanto di login, creato il menu con le voci che mi servono, adesso sorge il problema del non sapere




    Creo un menù principale e lo chiamo LIBRI, con un sottomenù chiamato NUOVO LIBRO




    Come faccio a far apparire una serie di campi di testo scrivibili (che poi andranno ad essere salvati nella tabella MySQL, ma questo è un passo successivo)




    Se ho capito bene devo creare delle funzioni che vengono richiamate dalle singole voci di menu, ma non riesco manco a far visualizzare un bottone




    Ci sono un sacco di guide on-line, ma il problema è sapere cosa cercare




    Grazie




    Già che sono posto il codice




    from tkinter import *
    import tkinter.messagebox as tm
    
    class LoginFrame(Frame):
        def __init__(self, master):
            super().__init__(master)
    
            self.label_nome_utente = Label(self, text="Nome Utente")
            self.label_password = Label(self, text="Password")
            self.entry_nome_utente = Entry(self)
            self.entry_password = Entry(self, show="*")
            self.label_nome_utente.grid(row=0, sticky=E)
            self.label_password.grid(row=1, sticky=E)
            self.entry_nome_utente.grid(row=0, column=1)
            self.entry_password.grid(row=1, column=1)
            self.logbtn = Button(self, text="Login", command=self._login_btn_clicked)
            self.logbtn.grid(columnspan=2)
            self.pack()
    
        def _login_btn_clicked(self):
            nome_utente = self.entry_nome_utente.get()
            password = self.entry_password.get()
    
            if nome_utente == "marco" and password == "password":
                tm.showinfo("Informazioni", "Benvenuto Marco")
                root.destroy()
                windows = Tk()
                windows.title("pyLibri 1.0")
                windows.geometry("960x640")
                barra_menu=Menu(windows)
                windows.config(menu=barra_menu)
                menu_libri=Menu(barra_menu)
                barra_menu.add_cascade(label="Libri",menu=menu_libri)
                menu_libri.add_command(label="Nuovo libro")
                menu_libri.add_command(label="Cerca libro")
                menu_libri.add_command(label="Cancella libro")
                menu_soci=Menu(barra_menu)
                barra_menu.add_cascade(label="Soci",menu=menu_soci)
                menu_soci.add_command(label="Nuovo socio")
                menu_soci.add_command(label="Cerca socio")
                menu_soci.add_command(label="Cancella socio")
                menu_prenotazioni = Menu(barra_menu)
                barra_menu.add_cascade(label="Prenotazioni", menu=menu_prenotazioni)
                menu_prenotazioni.add_command(label="Nuova prenotazione")
                menu_prenotazioni.add_command(label="Cerca prenotazione")
                menu_prenotazioni.add_command(label="Cancella prenotazione")
                menu_uscita = Menu(barra_menu)
                barra_menu.add_cascade(label="Uscita", menu=menu_uscita)
                menu_uscita.add_command(label="Esci", command=quit)
    
            else:
                tm.showerror("Errore", "Nome utente o password errata")
    
    
    root = Tk()
    root.title("pyLibri 1.0")
    lf = LoginFrame(root)
    root.mainloop()
    
    


  • Doppia shell
    Forum >> Principianti
    Ciao a tutti,

    sto scrivendo un micro gestionale in shell per la gestione di libri con db mysql





    Funziona quasi tutto ma mi chiedevo una cosa.





    La gestione di libri e clienti prevede, per la loro cancellazione, la preventiva visualizzazione dell'elenco corrispondente, in modo da sapere l' ID relativo e poterlo cancellare




    Funziona tutto, ma ovviamente siamo in shell e lo spazio è quello che è (ho provato a mettere la shell a schermo intero ma poco cambia)

    Quindi, stringendo ,la domanda è: posso aprire due shell in contemporanea? Ovviamente sì, con os.system, ma l'idea è di aprire la seconda shell per visualizzare solo l'elenco libri o clienti. L'alternativa sarebbe aprire una finestra con tkinter, ma non lo amo particolarmente




    Grazie

  • Re: esecuzione python in python
    Forum >> Principianti
    Scusate, ho sbagliato ad importare il codice



    import time
    import libreria_txt.py
    import libreria_mysql.py
    
    def stampa_menu_totale():
    print(30 * "-", "MENU", 30 * "-")
    print(" 1. Salva su txt")
    print(" 2. Salva in MySQL")
    print(" Q. Exit")
    print(66 * "-")
    
    
    loop = True
    
    while loop:
    	stampa_menu_totale()
    	print()
    	scelta = input("Inserire la scelta: ")
    
    	if scelta != "1" and scelta != "2" and scelta != "3" and scelta != "Q" and scelta != "q":
    	print("Scelta errata")
    	time.sleep(3)
    	stampa_menu()
    	elif scelta == 1:
    	os.system("libreria_txt.py")
    	elif scelta == 1:
    	os.system("libreria_mysql.py")
    	elif scelta == "Q" or scelta == "q":
    	print("Uscita dal programma")
    	time.sleep(3)
    	exit()

  • esecuzione python in python
    Forum >> Principianti
    Buonasera a tutti,
    un'informazione




    Sto scrivendo un piccolo gestionale da shell che fa, attualmente, due cose. Chiede di inserire titolo ed autore di un libro, un cd ed un dvd e lo salva in append su un file di testo ed in contemporanea in un db di mySQL




    Stranamente funziona, ma sta diventando prolisso




    Volevo dividere la cosa, uno per la parte di scrittura su testo ed uno per mySQL. Ancora stranamente, singolarmente funzionano




    A questo punto volevo scrivere un terzo script che, con un piccolo menù di scelta, permette di selezionare una modalità o un'altra




    In pratica premi 1 per file txt o 2 per mySQL




    ho usato un semplicissimo




    import time
    import libreria_txt.py
    import libreria_mysql.py

    def stampa_menu_totale():
    print(30 * "-", "MENU", 30 * "-")
    print(" 1. Salva su txt")
    print(" 2. Salva in MySQL")
    print(" Q. Exit")
    print(66 * "-")


    loop = True

    while loop:
    stampa_menu_totale()
    print()
    scelta = input("Inserire la scelta: ")

    if scelta != "1" and scelta != "2" and scelta != "Q" and scelta != "q":
    print("Scelta errata")
    time.sleep(3)
    stampa_menu()
    elif scelta == 1:
    os.system("libreria_txt.py")
    elif scelta == 1:
    os.system("libreria_mysql.py")
    elif scelta == "Q" or scelta == "q":
    print("Uscita dal programma")
    time.sleep(3)
    exit()
    Il problema è che, nonostante non ci siano errori apparenti (uso pycharm) viene eseguito il programma e non quello che ho scritto

    Ho pensato che fosse un problema di pycharm, che esegue solo uno script alla volta (o meglio, forse non so usarlo bene). Il problema però lo da anche da riga di comando, sia da CMD di Windows che da IDE di Python




    Dove sbaglio?




    Grazie



  • Re: Python vs Excel
    Forum >> Principianti
    Che pollo, se uso excel e non gli do riga e colonna lui si infastidisce



    Odio quando il computer ha ragione




    Come chiudo il post?






  • Python vs Excel
    Forum >> Principianti
    Ciao a tutti,
    sto scrivendo un piccolo gestionale per la gestione di libri, cd e dvd a casa (una base per poi espandere la cosa)

    Salvando su file nessun problema, ma vorrei intento salvare su excel (più pratico essendo un elenco di elementi)

    , ma mi dà qualche problema





    ho scritto

    import xlwt
    
    titolo_libro = True
    print("Elenco libri")
    print(67 * "-")
    
    while titolo_libro == True:
        titolo_libro = input("inserire il titolo del libro: ")
        scelta_libro = input("Altro titolo? s/n ")
        xls_file = xlwt.Workbook()
        libri = xls_file.add_sheet("libri")
        titoli=0
        titoli += 1
        libri.write(titoli,titolo_libro)
        if scelta_libro == "n":
            xls_file.save("Elenco_libri.xls")
            titolo_libro = False
    

    E' un estratto di un programma più grande, ma tolta la parte in excel funziona




    Mi restituisce errore




    Traceback (most recent call last):
      File "C:/Python/prove_varie.py", line 14, in <module>
        libri.write(titoli,titolo_libro)
      File "C:\Python\lib\site-packages\xlwt\Worksheet.py", line 1088, in write
        self.row(r).write(c, label, style)
      File "C:\Python\lib\site-packages\xlwt\Row.py", line 230, in write
        self.__adjust_bound_col_idx(col)
      File "C:\Python\lib\site-packages\xlwt\Row.py", line 71, in __adjust_bound_col_idx
        iarg = int(arg)
    ValueError: invalid literal for int() with base 10: 'pippo'

    L'errore è chiaro, credo, e cioè è sbagliato il tipo di dato che inserisco come "TITOLO", ma non mi spiego perchè, tolta la parte riguardante l'excel, funzioni regolarmente




    Grazie in anticipo
  • Re: Cicli
    Forum >> Principianti
    L'idea è di passare una serie di numeri (da 1 a 100, per esempio), passarli alla funzione, farli analizzare ed avere come output solo quelli che soddisfano il teorema
  • Re: Cicli
    Forum >> Principianti
    E siamo ancora qui
    ho scritto questo codice:

    a = 0
    
    b = 0
    
    c = 0
    
    n = 2
    
    def verifica_fermat(a, b, c, n):
    
        if n >= 2 and (a**n + b**n == c**n):
    
            print("Funziona")
    
        else:
    
            print("Non funziona")
    
    
    
    
    elenco_a = []
    
    elenco_b = []
    
    elenco_c = []
    
    
    
    
    def confronto(a,b,c):
    
        for a in range(0,10):
    
            for b in range(0,10):
    
                for c in range(0,10):
    
                    elenco_a.append(a)
    
                    elenco_b.append(b)
    
                    elenco_c.append(c)
    
                    # print(elenco_a)
    
                    # print(elenco_b)
    
                    # print(elenco_c)
    
    
    
    
    confronto(0,0,0)
    
    Una domanda. Come passo alla funzione "confronto" gli elementi degli elenchi?

    Posso scrivere confronto(elenco_a0,elenco_a0,elenco_a0) ma mi passa ovviamente solo un parametro, mentre vorrei passarglieli tutti, uno alla volta




    Grazie
  • Re: Cicli
    Forum >> Principianti
    Grazie.
    Avevo visto su google, ma volevo la soddisfazione di uscirne da solo
  • Re: Cicli
    Forum >> Principianti
    Il problema è che il codice non esiste, o almeno solo in parte
    Nello specifico, questa porzione fa in parte quello che mi serve, ma il risultato non è quello sperato, nel senso che ottengo a = 1 fino a che b = 10 e c = 100, poi si ripete per

    a = 2 fino a che b = 11 e c = 100 e così via.




    Io invece ho bisogno di passare ad una funzione che verifichi il teorema scritto nel primo post verificando ogni possibile combinazione




    a=1,b=0,c=0

    a=1,b=1,c=0

    a=1,b=1,c=1

    a=2,b=1,c=1




    e così via. Una sorta di test su una combinazione di tre cifre fino a che non trovo quella corretta (è tutto accademico. Non cerco di svaligiare banche :))




    E' sicuramente un problema di uso del ciclo. Ho provato anche a creare delle funzioni che singolarmente eseguano un ciclo for per ogni operatore del teorema ma non cambia




    Ad usare il ciclo if su n ho pensato anch'io, ma mi servirà alla fine perchè il controllo va fatto solo per valori di n<=2




    Grazie




    a = 0
    b = 0
    c = 0
    for i in range(10):
        a = a + 1
        for i in range(10):
            b = b + 1
            for i in range(10):
                c = c + 1
                print(a, b, c)



    --- Ultima modifica di Triestin in data 2018-11-29 14:18:35 ---