コード例 #1
0
def error(t): #Δημιουργία παραθύρου Σφάλματος
    err_window=scrollbar.create('350x150','Σφάλμα')
    i=Image.open("error1.JPG")
    img_err=ImageTk.PhotoImage(i)
    Label(err_window,bg='white',image=img_err).pack(side=LEFT)
    Label(err_window,bg='white', text=t, fg="red", font=('arial','14')).pack(side=LEFT)
    err_window.mainloop()
    return
コード例 #2
0
def success(t,option=0): #Δημιουργία παραθύρου επιτυχίας
    succ_window=scrollbar.create('380x250','Επιτυχία')
    i=Image.open("succ1.JPG")
    img=ImageTk.PhotoImage(i)
    Label(succ_window,bg='white',image=img).pack()
    Label(succ_window,bg='white', text=t, font=('arial','14')).pack()
    if(option==1):
        Label(succ_window,bg='white', text="Προσοχή!\nΔεν υπάρχει αρκετό απόθεμα", font=('arial','14'),fg='red').pack()
    succ_window.mainloop()
    return
コード例 #3
0
def choice(a,conn): #δημιουργία παραθύρου για επιλογή 

    if(a==1): #για την περίπτωση "Στοιχεία συμβολαίων ανά κατηγορία καλλιτεχνών"
        window=scrollbar.create('350x250','Επιλογή Ιδιότητας')
        ep=['*** Όλες ***','Στιχουργοί','Συνθέτες','Μουσικοί']
        label='Επιλέξτε ιδιότητα'
        b=Button(window,bg='white',text="Επιλογή",font=('arial','12'),command=lambda: contracts(conn,window,combo.get()))
    
    else: #για την περίπτωση "Συγκροτήματα/Τραγουδιστές"
        window=scrollbar.create('350x250','Επιλογή Κατηγορίας')
        ep=['Συγκροτήματα','Τραγουδιστές']
        label='Επιλέξτε κατηγορία'
        b=Button(window,bg='white',text="Επιλογή",font=('arial','12'),command=lambda: band_singers(conn,window,combo.get()))
    
    Label(window,bg='white', text=label, fg="blue", font=('arial','13')).pack()
    combo=ttk.Combobox(window,values=ep,font=('arial','13'),width=25)
    combo.pack()
    combo.current(0)
    b.pack()
    window.mainloop()
    return
コード例 #4
0
def choose(
    a, conn
):  # επιλογή πίνακα(για εισαγωγή, διαγραφή και αλλαγή στοιχειων) ή επιλογή άλμπουμ μεσα από combobox(για τα υπόλοιπα)
    if (a < 6):
        ep = [
            'Άλμπουμ', 'Ανήκει', 'Μουσικό Είδος', 'Επικ. Γραφίστα',
            'Επικ. Μάνατζερ', 'Επικ. Οργανοπαίκτη', 'Επικ. Πελάτη',
            'Επικ. Στούντιο', 'Επικ. Συμβεβλημένου', 'Ερμηνείες',
            'Φυσική Διανομή', 'Γράφει', 'Ψηφιακή Διανομή', 'Γραφίστες',
            'Μάνατζερ', 'Μουσικοί', 'Οργανοπαίκτες', 'Πελάτες',
            'Περσόνες/γκρουπ', 'Πωλήσεις', 'Στιχουργοί', 'Στούντιο',
            'Συμβεβλημένοι', 'Συμβόλαια', 'Συμμετέχει', 'Συνθέτει', 'Συνθέτες',
            'Τραγούδια', 'Υπάγεται'
        ]
        label = "Επιλέξτε πίνακα"
        titlos = 'Επιλογή Πίνακα'
    else:
        titlos = 'Επιλογή Άλμπουμ'
        label = 'Επιλέξτε Άλμπουμ'
        cur = conn.cursor()
        cur.execute('''SELECT titlos FROM album''')
        titloi = cur.fetchall()
        if (a == 6):
            ep = ['**Όλα τα Άλμπουμ**']
        else:
            ep = []
        for i in range(len(titloi)):
            ep.append(titloi[i][0])
        cur.close()
    window = scrollbar.create('350x250', titlos)
    tkinter.Label(window,
                  bg='white',
                  text=label,
                  fg="blue",
                  font=('times new roman', '14')).pack()
    combo = ttk.Combobox(window, values=ep, font=('times new roman', '14'))
    combo.pack()
    combo.current(0)
    tkinter.Button(
        window,
        bg='white',
        text="Επιλογή",
        font=('times new roman', '12'),
        command=lambda: save_choice(a, conn, window, combo.get())).pack()
    window.mainloop()
    return
コード例 #5
0
def cd_or_vinyl(
        conn):  #δημιουργία παραθύρου, για την επιλογή μεταξύ CD και VINYL
    window = scrollbar.create('350x250', 'Επιλογή Είδους')
    Label(window,
          text="Επιλέξτε είδος",
          fg="blue",
          bg='white',
          font=('arial', '13')).pack()
    combo = ttk.Combobox(window, values=['CD', 'VINYL'], font=('arial', '13'))
    combo.pack()
    combo.current(0)
    Button(window,
           text="Επιλογή",
           bg='white',
           font=('arial', '12'),
           command=lambda: physical_sales(conn, window, combo.get())).pack()
    window.mainloop()
コード例 #6
0
def choose_song(conn,ch): #επιλογή τραγουδιού
    cur=conn.cursor()
    cur.execute('''SELECT tragoudi.titlos
                    FROM `tragoudi` JOIN anhkei ON tragoudi.song_id=anhkei.song_id
                    WHERE anhkei.album_id in (SELECT album.album_id FROM album WHERE album.titlos='{}')'''.format(ch))
    option_tuple=cur.fetchall()
    options=[]
    for i in range(len(option_tuple)):
        options.append(option_tuple[i][0])
    cur.close()
    window=scrollbar.create('350x250',"Επιλογή Τραγουδιού")
    if(options!=[]): #αν υπαρχουν τραγούδια στο άλμπουμ
        Label(window,bg='white', text='Επιλέξτε Τραγούδι', fg="blue", font=('arial','11')).pack()
        combo=ttk.Combobox(window,values=options,font=('arial','11'),width=25)
        combo.pack()
        combo.current(0)
        Button(window,bg='white',text="Επιλογή",font=('arial','12'),command=lambda: instruments(conn,combo.get(),window)).pack()
    else: #αν δεν υπάρχουν
        Label(window,bg='white', text='Δεν υπάρχουν τιμές!', fg="red", font=('arial','14')).pack()
    window.mainloop()
    return
コード例 #7
0
def delete_row(table, conn, combobox_array, window): ##ΔΙΑΓΡΑΦΗ ΠΛΕΙΑΔΑΣ
    
    entry=[] 

    #Αποθήκευση της επιλογής πλειάδας 
    for i in combobox_array:
        entry.append(i.get())
        
    primary=helping_func.get_primary(table,conn) #Εύρεση του/των γνωρισμάτος/των που αποτελούν το πρωτεύον κλειδί

    cur=conn.cursor()
    sql2='''SELECT * FROM {} WHERE {}="{}"'''.format(table,primary[0],entry[0]) 
    sql1='''DELETE FROM {} WHERE {}="{}"'''.format(table,primary[0],entry[0])
    for i in range(1,len(primary)):
        sql1=sql1+' AND {}="{}"'.format(primary[i],entry[i])
        sql2=sql2+' AND {}="{}"'.format(primary[i],entry[i])
    sql1=sql1+';'
    sql2=sql2+';'

    #ελέγχουμε μήπως δεν υπάρχει η πλειάδα που μας δόθηκε
    cur.execute(sql2)
    if(cur.fetchall() is None):
        helping_func.error("Δεν βρέθηκε!")

    else:
        #Καταστροφή του προηγούμενου παραθύρου και δημιουργία του παραθύρου προειδοποίησης
        cur.close()
        window.destroy()
        alert_window=scrollbar.create('450x250','ALERT')
        i=Image.open("alert.JPG")
        img=ImageTk.PhotoImage(i)
        Label(alert_window,bg='white',image=img).grid(column=0,row=0,sticky=NW,columnspan=2)
        Label(alert_window,bg='white', text="Είστε σίγουροι για την διαγραφή;\nΔεν θα μπορεί να γίνει αναίρεση!", fg="red", font=('arial','14')).grid(column=2,row=0,columnspan=2)
        Button(alert_window,bg='white', text="ΔΙΑΓΡΑΦΗ", relief='flat',font=('arial','14'),command= lambda: delete_btn(conn,alert_window,sql1,table,entry)).grid(column=2,row=1,columnspan=2)
        Button(alert_window,bg='white', text="ΑΚΥΡΩΣΗ", relief='flat', font=('arial','14'),command= lambda: alert_window.destroy()).grid(column=2,row=2,columnspan=2)
        alert_window.mainloop()
    return
コード例 #8
0
def columns_to_update(table,conn,combobox_array,window,col): #επιλογή στηλών προς ενημέρωση
    entry=[]

    #αποθήκευση επιλεγμένης πλειάδας
    for i in combobox_array:
        entry.append(i.get())
    window.destroy() #καταστροφή παραθύρου επιλογής πλειάδας
    cur=conn.cursor()

    #δημιουργία παραθύρου επιλογής στηλών προς ενημέρωση
    check=scrollbar.create('340x350','Επιλογή στοιχείων για ενημέρωση')
    Label(check,bg='white', text='Επιλέξτε ποιές τιμές θέλετε να ενημερώσετε', fg="blue", font=('arial','13')).pack()

    #δημιουργία των "Checkbutton", ένα για κάθε στήλη που δεν είναι PRIMARY KEY 
    ch_arr=[]
    for i in col:
        ch=IntVar()
        c=Checkbutton(check,bg='white',text=f'{helping_func.greek(i)}',variable=ch,font=('arial','13'))
        c.pack()
        ch_arr.append(ch)

    #κουμπί για αποθήκευση επιλογής που παραπέμπει στην "new_data"
    Button(check,bg='white',text="Επιλογή",font=('arial','12'),command=lambda: new_data(3,conn,table,entry,col,check,ch_arr)).pack()
    return
コード例 #9
0
def select_row_window(a,conn,table):  # παράθυρο για επιλογή γνωρισμάτων πλειάδας (για διαγραφή, ενημέρωση ή εκτύπωση πλειάδας)
    
    if(a!=5):  #στην διαγραφή και στην ενημέρωση,η επιλογή γίνεται βάσει του primary key
        fields=helping_func.get_primary(table,conn)
    else:  #στην εκτύπωση πλειάδας,η επιλογή γίνεται βάσει οποιουδήποτε γνωρίσματος
        fields=[]
        cur=conn.cursor()
        cur.execute(f'''
        SELECT COLUMN_NAME
        FROM `INFORMATION_SCHEMA`.`COLUMNS` 
        WHERE `TABLE_SCHEMA`='recordcompany2' 
        AND `TABLE_NAME`="{table}"''')
        c=cur.fetchall()
        for i in range(len(c)):
            fields.append(str(c[i][0]))
        cur.close()

    #δημιουργία παραθύρου
    window=scrollbar.create('500x400','Επιλογή πλειάδας')

    #Εαν γίνεται ενημέρωση, γίνεται έλεγχος για το αν υπάρχουν στοιχεία που δεν ειναι PRIMARY KEY. Αν δεν υπάρχουν, η ενημέρωση ακυρώνεται
    col=[]
    if(a==3):
        cur=conn.cursor()
        cur.execute('''
        SELECT COLUMN_NAME
        FROM `INFORMATION_SCHEMA`.`COLUMNS` 
        WHERE `TABLE_SCHEMA`='recordcompany2' 
        AND `TABLE_NAME`=%s AND `COLUMN_KEY`!="PRI"''',table)
        c=cur.fetchall()
        for i in range(len(c)):
            col.append(c[i][0])
        cur.close()
        if(len(col)==0):
            Label(window,bg='white', text="Δεν μπορείτε να αλλάξετε αυτόν τον πίνακα.\nΔοκιμάστε διαγραφή και εισαγωγή εκ νέου.", fg="red", font=('arial','14')).grid(column=0,row=0,sticky=N)
            return
    

    Label(window,bg='white', text='Επιλέξτε πλειάδα', fg="blue", font=('arial','13')).grid(column=1,row=0,sticky=N)

    #Για καθε στήλη που ειναι primary key, δημιουργείται Combobox με επιλογές τα αποθηκευμένα στοιχεία της στήλης.
    #Για την επιλογή "Εκτύπωση πλειάδας" γίνεται για όλες τις στήλες
    i=1
    combobox_array=[]
    for k in fields:
        #εμφάνιση ονόματος στήλης
        Label(window,bg='white', text=f'{helping_func.greek(k)}:', fg="blue", font=('arial','13')).grid(column=0,row=i,sticky=W,padx=10)
        cur=conn.cursor()
        cur.execute(f'''SELECT DISTINCT {k}
                        FROM {table}''')
        option_tuple=cur.fetchone()
        op=[]

        #αν είναι η επιλογή "εκτύπωση πλειάδας", βαζουμε και την επιλογή '-', ώστε να επιλέγει αυτό ο χρήστης, αμα δεν θέλει να αναζητήσει πλειάδα βάσει αυτού του γνωρίσματος       
        if(a==5):
            op.append('-')
        elif(option_tuple is None): #αλλιώς αν δεν υπάρχουν δεδομένα(σε στήλη που ειναι PRIMARY KEY),εμφανίζεται μήνυμα λάθους
            helping_func.error("Δεν υπάρχουν πλειάδες")
            return

        #δημιουργία επιλογών του Combobox
        while option_tuple is not None:
            op.append(str(option_tuple[0]))
            option_tuple=cur.fetchone()

        #δημιουργία Combobox
        combo=ttk.Combobox(window,values=op,font=('arial','13'),width=25)
        combo.grid(column=1,row=i,columnspan=2)
        combo.current(0)
        combobox_array.append(combo)
        i=i+1
        cur.close()

    #δημιουργία κουμπίων
    if a==5:
        Button(window,bg='white',text="Επιλογή",font=('arial','12'),command=lambda: show_row(table,conn,combobox_array,fields,window)).grid(column=1,row=i,sticky=S)
    elif a==2:
        Button(window,bg='white',text="Επιλογή",font=('arial','12'),command=lambda: delete_row(table,conn,combobox_array,window)).grid(column=1,row=i,sticky=S)
    else:
        Button(window,bg='white',text="Επιλογή",font=('arial','12'),command=lambda: columns_to_update(table,conn,combobox_array,window,col)).grid(column=1,row=i,sticky=S)
    window.mainloop()
    return
コード例 #10
0
def new_data(option,conn,table,entry,columns,check='',ch_arr=''): #επιλογή καινούριων δεδομένων
    
    #για ενημέρωση
    if(option==3):

        #δημιουργια αντίγραφου των αρχικών ονομάτων των στηλών
        columns_original=[]
        for item in columns:columns_original.append(item)

        #αφαίρεση απο το "columns" όσων στηλών δεν επιλέχθηκαν 
        for i in range(len(ch_arr)):
            if(ch_arr[i].get()!=1): columns.remove(columns_original[i])

        #εάν δεν επιλέχθηκαν στήλες, εμφάνιση μηνύματος λάθους και ακύρωση της ενημέρωσης
        if(len(columns)==0):
            helping_func.error('Δεν επιλέξατε στοιχεία προς τροποποίηση!')
            return
        else:   #αλλιώς, καταστροφή προηγούμενου παραθύρου
            check.destroy()

    #για εισαγωγή
    if(option==1):

        #δημιουργία λίστας με τις στήλες
        columns=[]
        cur=conn.cursor()
        cur.execute('''SELECT `COLUMN_NAME` 
                       FROM `INFORMATION_SCHEMA`.`COLUMNS` 
                       WHERE `TABLE_SCHEMA`='recordcompany2' 
                       AND `TABLE_NAME`=%s;''',table)
        row=cur.fetchall()
        for i in range(len(row)):
            columns.append(row[i][0])
        cur.close()

    nv=[]
    entries=[]
    new_val=scrollbar.create('500x300','Νέες τιμές') #δημιουργία νέου παραθύρου

    #Εντοπισμός Foreign key
    cur=conn.cursor()
    cur.execute(f'''SELECT 
                    COLUMN_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
                    FROM
                    INFORMATION_SCHEMA.KEY_COLUMN_USAGE
                    WHERE
                    REFERENCED_TABLE_SCHEMA = 'recordcompany2' AND
                    TABLE_NAME = "{table}";''')
    fk_tuple=cur.fetchone()
    fk_arr=[]
    fk_col_arr=[]
    while fk_tuple is not None:
        temp=[]
        fk_col_arr.append(str(fk_tuple[0]))
        for i in range(1,3):
            temp.append(str(fk_tuple[i]))
        fk_arr.append(temp)
        fk_tuple=cur.fetchone()
    cur.close()

    #δημιουργία του ανάλογου κουτιού εισαγωγής για κάθε στοιχείο της λίστας "columns"
    for i in range(len(columns)):
        Label(new_val,bg='white', text=f'{helping_func.greek(columns[i])}:', font=('arial','13')).grid(column=0,row=i,columnspan=2)
        if(columns[i] in fk_col_arr): # Για τις στήλες που είναι foreign key
            cur=conn.cursor()
            index=-1
            for c in range(len(fk_col_arr)):
                if(columns[i]==fk_col_arr[c]):
                    index=c
            cur.execute(f'''SELECT DISTINCT {fk_arr[index][1]}
                        FROM {fk_arr[index][0]}''')
            option_tuple=cur.fetchone()
            if(option==1):
                op=['-']
            else:
                op=[]
            if(option_tuple is None and option==3): #αν δεν ύπαρχουν δεδομένα (στην στήλη που δείχνει το foreign key),εμφανίζεται μήνυμα λάθους
                helping_func.error("Δεν υπάρχουν δεδομένα\nγια να αντιστοιχίσετε\nτο foreign key!")
                return

            #δημιουργία επιλογών του Combobox
            while option_tuple is not None:
                op.append(str(option_tuple[0]))
                option_tuple=cur.fetchone()

            #δημιουργία Combobox
            combo=[]
            combo.append(ttk.Combobox(new_val,values=op,font=('arial','13'),width=16))
            combo[0].grid(column=2,row=i,columnspan=2)
            combo[0].current(0)
            entries.append(combo)
            cur.close()

        elif(columns[i]=='order_date'): #για δεδομένα datetime
            entries.append(helping_func.datetime_data(i,new_val))

        elif('date' in columns[i] or 'rec' in columns[i]):#για δεδομένα date
            entries.append(helping_func.date_data(i,new_val))

        elif(columns[i]=='diarkeia'):#για δεδομένα time
            entries.append(helping_func.time_data(i,new_val))

        else:#για όλα τα άλλα δεδομένα
            temp1=[]
            temp1.append(Entry(new_val,font=('times new roman','12'), bg='white', relief='sunken', bd=2))
            entries.append(temp1)
            entries[i][0].grid(column=2,row=i,columnspan=2)

    #δημιουργία κουμπιών για αποθήκευση
    if(option==3):
        Button(new_val,bg='white',text="Αποθήκευση",font=('arial','12'),command=lambda: update_exe(conn,table,entry,entries,columns,new_val)).grid(column=1,row=i+1,columnspan=2)
    else:
        Button(new_val,bg='white',text="Αποθήκευση",font=('arial','12'),command=lambda: insert_row(table,conn,entries,new_val,columns)).grid(column=1,row=i+1,columnspan=2)
    new_val.mainloop()
    return
コード例 #11
0
def homescreen(conn):  #δημιουργία αρχικής οθόνης

    main = scrollbar.create("700x550", 'Αρχική', 1)

    #δημιουργία μενού
    menubar = tkinter.Menu(main)
    edit = tkinter.Menu(menubar, tearoff=0)
    edit.add_command(label='Εισαγωγή...', command=lambda: choose(1, conn))
    edit.add_command(label='Διαγραφή...', command=lambda: choose(2, conn))
    edit.add_command(label='Αλλαγή στοιχείων...',
                     command=lambda: choose(3, conn))

    edit.add_separator()
    edit.add_command(label="Έξοδος", command=main.destroy)
    menubar.add_cascade(label="Επεξεργασία", menu=edit)

    show = tkinter.Menu(menubar, tearoff=0)
    show.add_command(label='Εκτύπωση πίνακα...',
                     command=lambda: choose(4, conn))
    show.add_command(label='Εκτύπωση πλειάδας...',
                     command=lambda: choose(5, conn))
    menubar.add_cascade(label="Εκτύπωση", menu=show)

    main.config(menu=menubar)

    i = Image.open("logo.PNG")
    img = ImageTk.PhotoImage(i)
    tkinter.Label(main, bg='white', image=img).pack()

    #δημιουργία κουμπιών
    btn1 = HoverBtn(main,
                    bg='white',
                    width=500,
                    activebackground='light cyan',
                    relief='flat',
                    text="Φυσικές πωλήσεις",
                    font=('helvetica', '14'),
                    command=lambda: sales.cd_or_vinyl(conn))
    btn2 = HoverBtn(main,
                    bg='white',
                    width=500,
                    activebackground='light cyan',
                    relief='flat',
                    text="Έσοδα ανά άλμπουμ",
                    font=('helvetica', '14'),
                    command=lambda: sales.profit_per_album(conn))
    btn3 = HoverBtn(main,
                    bg='white',
                    width=500,
                    activebackground='light cyan',
                    relief='flat',
                    text="Στοιχεία τραγουδιών ανά άλμπουμ",
                    font=('helvetica', '14'),
                    command=lambda: choose(6, conn))
    btn4 = HoverBtn(main,
                    bg='white',
                    width=500,
                    activebackground='light cyan',
                    relief='flat',
                    text="Συγκροτήματα/Τραγουδιστές",
                    font=('helvetica', '14'),
                    command=lambda: musicians.choice(2, conn))
    btn5 = HoverBtn(main,
                    bg='white',
                    width=500,
                    activebackground='light cyan',
                    relief='flat',
                    text="Στοιχεία συμβολαίων ανά κατηγορία καλλιτεχνών",
                    font=('helvetica', '14'),
                    command=lambda: musicians.choice(1, conn))
    btn6 = HoverBtn(main,
                    bg='white',
                    width=500,
                    activebackground='light cyan',
                    relief='flat',
                    text="Οργανοπαίκτες που συμμετείχαν σε ένα τραγούδι",
                    font=('helvetica', '14'),
                    command=lambda: choose(7, conn))
    btn7 = HoverBtn(
        main,
        bg='white',
        width=500,
        activebackground='light cyan',
        relief='flat',
        text="Πελάτες και ποσότητες των προϊόντων που προμηθεύτηκαν",
        font=('helvetica', '14'),
        command=lambda: partners.pelates(conn))
    btn8 = HoverBtn(main,
                    bg='white',
                    width=500,
                    activebackground='light cyan',
                    relief='flat',
                    text="Γραφίστες και τα άλμπουμ που έχουν επιμεληθεί",
                    font=('helvetica', '14'),
                    command=lambda: partners.grafistas(conn))
    btn9 = HoverBtn(main,
                    bg='white',
                    width=500,
                    activebackground='light cyan',
                    relief='flat',
                    text="Άλμπουμ ανά μουσικό είδος",
                    font=('helvetica', '14'),
                    command=lambda: album_info.album_per_genre(conn))
    btn10 = HoverBtn(main,
                     bg='white',
                     width=500,
                     activebackground='light cyan',
                     relief='flat',
                     text="Άλμπουμ ανά studio ηχογράφησης",
                     font=('helvetica', '14'),
                     command=lambda: partners.album_per_studio(conn))

    btn1.pack()
    btn2.pack()
    btn3.pack()
    btn4.pack()
    btn5.pack()
    btn6.pack()
    btn7.pack()
    btn8.pack()
    btn9.pack()
    btn10.pack()
    main.mainloop()
コード例 #12
0
                if (errors != 0): err.destroy()
                err = tkinter.Label(
                    parent,
                    bg='white',
                    text="Λάθος όνομα χρήστη ή κωδικός. \nΑποτυχία σύνδεσης.",
                    fg="red",
                    font=('arial', '11'))
                err.pack()
                errors = 2
    return


#δημιουργία παραθύρου για την εισαγωγή όνομα χρήστη και κωδικού
global errors
errors = 0
parent = scrollbar.create("350x170", 'Σύνδεση', 1)

name = tkinter.Label(parent,
                     text="Userame",
                     font=('times new roman', '12'),
                     bg='white').pack()
e1 = tkinter.Entry(parent,
                   font=('times new roman', '11'),
                   bg='white',
                   relief='sunken',
                   bd=2)
e1.pack()
password = tkinter.Label(parent,
                         text="Password",
                         font=('times new roman', '12'),
                         bg='white').pack()