Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- #-*- coding: utf-8 -*-
- import Tkinter as tk
- #PLAN:
- # [ ] 1. Dokonczyc wyskakujace okna z bledami przy wysylaniu
- # [x] 2. Zrobic tak aby wpisane rzeczy zostawaly przy cofaniu sie do innego okna
- # [ ] 3. Zaprogramowac funkcje sieciowe
- #---------------------------------------------------------------------
- def okno_blad(tekst):
- # tkitner moze miec tylko jedno glowne okno - tk.Tk()
- # pozostale okna tworzy sie za pomoca tk.Toplevel
- bladokno = tk.Toplevel()
- l = tk.Label(bladokno, text=tekst, font=("courier new", 12, 'bold'))
- l.pack()
- b = tk.Button(bladokno, text="OK", font=("courier new", 12, 'bold'), command=bladokno.destroy)
- b.pack()
- # tkitner moze miec tylko jeden mainloop()
- #---------------------------------------------------------------------
- def przelicz():
- if var_przesylka.get() == 0:
- okno_blad('Wybierz rodzaj przesylki!!!')
- else:
- suma = CENA * var_mnoznik.get() + var_przesylka.get()
- var_kwota_laczna.set('Kwota laczna: {} zl.'.format(suma))
- #---------------------------------------------------------------------
- def change_to_page(number):
- global current_page # zwykla zmienna an nie StringVar, etc. wiec musi byc global
- if current_page:
- # schowaj strone
- current_page.pack_forget()
- # ustaw nowa strone
- current_page = all_pages[number]
- # pokaz nowa strone
- current_page.pack()
- # ---------------------------------------------------------------------
- def create_page_0(okno):
- page = tk.Frame(okno, width=130, height=30)
- dane = tk.Frame(page)
- dane.grid(row=0, column=0, columnspan=2)
- l = tk.Label(dane, text='Uzupelnij dane!')
- l.grid(row=0, columnspan=2)
- l = tk.Label(dane, text='Imie')
- l.grid(row=2, column=0)
- l = tk.Label(dane, text='Nazwisko')
- l.grid(row=3, column=0)
- l = tk.Label(dane, text='Miejscowosc')
- l.grid(row=4, column=0)
- l = tk.Label(dane, text='Kod pocztowy')
- l.grid(row=5, column=0)
- l = tk.Label(dane, text='Ulica')
- l.grid(row=6, column=0)
- l = tk.Label(dane, text='Numer domu')
- l.grid(row=7, column=0)
- e = tk.Entry(dane, textvariable=var_imie)
- e.grid(row=2, column=1)
- e = tk.Entry(dane, textvariable=var_nazwisko)
- e.grid(row=3, column=1)
- e = tk.Entry(dane, textvariable=var_miejscowosc)
- e.grid(row=4, column=1)
- e = tk.Entry(dane, textvariable=var_kod)
- e.grid(row=5, column=1)
- e = tk.Entry(dane, textvariable=var_ulica)
- e.grid(row=6, column=1)
- e = tk.Entry(dane, textvariable=var_nr_domu)
- e.grid(row=7, column=1)
- # - poza frame z danymi -
- b = tk.Button(page, text="Anuluj", command=okno.destroy)
- b.grid(row=1, column=0)
- b = tk.Button(page, text="Dalej", command=goto_page_1)
- b.grid(row=1, column=1)
- return page
- def goto_page_1():
- # logika przy przejsciu na nastepna strone
- print('przejscie: 0 -> 1')
- change_to_page(1)
- #---------------------------------------------------------------------
- def create_page_1(okno):
- page = tk.Frame(okno, width=130, height=30)
- dane = tk.Frame(page)
- dane.grid(row=0, column=0, columnspan=2)
- l = tk.Label(dane, text='Sposób dostawy:')
- l.grid(row=1, column=0)
- dostawa1 = tk.Radiobutton(dane, text='List ekonomiczny', value=4, variable=var_przesylka, command=przelicz)
- dostawa2 = tk.Radiobutton(dane, text='List polecony', value=7, variable=var_przesylka, command=przelicz)
- dostawa3 = tk.Radiobutton(dane, text='Przesyłka kurierska', value=12, variable=var_przesylka, command=przelicz)
- dostawa1.deselect()
- dostawa2.deselect()
- dostawa3.deselect()
- dostawa1.grid(row=0, column=1, sticky=tk.W)
- dostawa2.grid(row=1, column=1, sticky=tk.W)
- dostawa3.grid(row=2, column=1, sticky=tk.W)
- l = tk.Label(dane, text='Liczba produktów:')
- l.grid(row=3, column=0)
- s = tk.Spinbox(dane, width=4, from_=1, to=5, textvariable=var_mnoznik, command=przelicz)
- s.grid(row=3, column=1)
- l = tk.Label(dane, text=' ')
- l.grid(row=6)
- l = tk.Label(dane, text='Akceptuję regulamin:')
- l.grid(row=7, column=0, sticky=tk.E)
- c = tk.Checkbutton(dane, variable=var_regulamin)
- c.grid(row=7, column=1)
- c.deselect()
- l = tk.Label(dane, text='Wysyłaj mi newsletter:')
- l.grid(row=8, column=0, sticky=tk.E)
- c = tk.Checkbutton(dane, variable=var_email)
- c.grid(row=8, column=1)
- c.deselect()
- l = tk.Label(dane, textvariable=var_kwota_laczna, font=("Helvetica", 10))
- l.grid(row=9, column=0, sticky=tk.W)
- # - poza frame z danymi -
- b = tk.Button(page, text='Wstecz', command=lambda:change_to_page(0))
- b.grid(row=1, column=0)
- b = tk.Button(page, text="Dalej", command=goto_page_2)
- b.grid(row=1, column=1)
- return page
- def goto_page_2():
- # logika przy przejsciu na nastepna strone
- print('przejscie: 1 -> 2')
- change_to_page(2)
- # update page 2
- var_content1.set(var_imie.get() + ' ' + var_nazwisko.get())
- var_content2.set(var_kod.get() + ' ' + var_miejscowosc.get())
- var_content3.set(var_ulica.get() + ' ' + var_nr_domu.get())
- #---------------------------------------------------------------------
- def create_page_2(okno):
- global pt_komentarz
- page = tk.Frame(okno, width=130, height=30)
- dane = tk.Frame(page)
- dane.grid(row=0, column=0, columnspan=2)
- l = tk.Label(dane, text=' Komentarz: ', font=("Helvetica", 11))
- l.grid(row=0, columnspan=2)
- pt_komentarz = tk.Text(dane, height=6, width=49)
- pt_komentarz.grid(row=1, columnspan=2)
- l = tk.Label(dane, text=' Podsumowanie:', font=("Helvetica", 11))
- l.grid(row=2, column=0, sticky=tk.W)
- l = tk.Label(dane, textvariable=var_content1)
- l.grid(row=3, column=1)
- l = tk.Label(dane, textvariable=var_content2)
- l.grid(row=4, column=1)
- l = tk.Label(dane, textvariable=var_content3)
- l.grid(row=5, column=1)
- l = tk.Label(dane, textvariable=var_kwota_laczna, font=("Helvetica", 10))
- l.grid(row=6, column=0, sticky=tk.W)
- # - poza frame z danymi -
- b = tk.Button(page, text='Wstecz', command=lambda:change_to_page(1))
- b.grid(row=1, column=0)
- b = tk.Button(page, text="Wyślij", command=goto_page_3)
- b.grid(row=1, column=1)
- return page
- def goto_page_3():
- # logika przy przejsciu na nastepna strone
- print('przejscie: 2 -> 3')
- ok = True
- if var_regulamin.get() == 0:
- okno_blad('Zaakceptuj regulamin !!!')
- ok = False
- if var_imie.get() == '' or var_nazwisko.get() == '' or \
- var_ulica.get() == '' or var_nr_domu.get() == '' or \
- var_kod.get() == '' or var_miejscowosc.get() == '':
- okno_blad('Uzupełnij dane !!!')
- ok = False
- if ok:
- okno_blad("Czas wysłać")
- # --- main ---
- # wartosci stale (nazwy UPPER_CASE)
- CENA = 10
- # init
- okno = tk.Tk()
- # globalne dane tkinter - musi byc po tk.Tk()
- # page 0
- var_imie = tk.StringVar()
- var_nazwisko = tk.StringVar()
- var_kod = tk.StringVar()
- var_miejscowosc = tk.StringVar()
- var_ulica = tk.StringVar()
- var_nr_domu = tk.StringVar()
- # page 1
- var_przesylka = tk.IntVar(value=0)
- var_mnoznik = tk.IntVar(value=1)
- var_regulamin = tk.BooleanVar()
- var_email = tk.BooleanVar()
- var_kwota_laczna = tk.StringVar()
- # page 2
- var_content1 = tk.StringVar()
- var_content2 = tk.StringVar()
- var_content3 = tk.StringVar()
- pt_komentarz = None # tk.Text nie ma textvariable
- # ustawienia okna
- okno.title('Formularz.')
- okno.resizable(False, False)
- # utworzenie wszystkich stron
- all_pages = []
- current_page = None
- all_pages.append( create_page_0(okno) )
- all_pages.append( create_page_1(okno) )
- all_pages.append( create_page_2(okno) )
- # pokazanie pierwszej strony
- change_to_page(0)
- # start
- okno.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement