diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..9661ac7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 396011c..80357d7 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -15,9 +15,13 @@ + + + + + + + \ No newline at end of file diff --git a/changelog-UC.txt b/changelog-UC.txt index 7f8e910..ad257c0 100644 --- a/changelog-UC.txt +++ b/changelog-UC.txt @@ -3,4 +3,13 @@ - Dodanie w głównym (nadrzędnym) folderze programu, skryptu inicjującego główny moduł programu - Dodanie zapisu opcji czarnego motywu do 'config.cfg' - Wstępne stworzenie skryptu pozwalającego na zapis do pliku 'config.cfg' -- Błąd o braku głównego pliku składowego programu ('main.py') oraz modułu wywołującego okna dialogowe ('dialog.py') \ No newline at end of file +- Błąd o braku głównego pliku składowego programu ('main.py') oraz modułu wywołującego okna dialogowe ('dialog.py') + +4.0 Alpha (Build 19346.1) +- Przebudowanie skryptu odczytującego plik konfiguracyjny +- Dodanie skryptu zapisującego ustawienia do pliku konfiguracyjnego +- Scalenie dwóch powyższych skryptów do modułu 'load_config.py' +- Przeprojektowanie kodu +- Lekkie przeprojektowanie układu interfejsu +- Stworzenie palety barw motywu jasnego i ciemnego +- Wprowadzenie motywu jasnego i ciemnego (z możliwością zmiany jedynie przez plik 'config.cfg' diff --git a/components/__pycache__/dialog.cpython-38.pyc b/components/__pycache__/dialog.cpython-38.pyc index 8a7dee9..057de7d 100644 Binary files a/components/__pycache__/dialog.cpython-38.pyc and b/components/__pycache__/dialog.cpython-38.pyc differ diff --git a/components/__pycache__/load_config.cpython-38.pyc b/components/__pycache__/load_config.cpython-38.pyc index a0178d6..d0e2ef0 100644 Binary files a/components/__pycache__/load_config.cpython-38.pyc and b/components/__pycache__/load_config.cpython-38.pyc differ diff --git a/components/dialog.py b/components/dialog.py index a8251b5..4caaa24 100644 --- a/components/dialog.py +++ b/components/dialog.py @@ -1,6 +1,6 @@ """ # GeneratorCSV -# Wersja 4.0: UC 1 +# Wersja 4.0: UC 2 # by Mateusz Skoczek # luty 2019 - grudzień 2019 # dla ZSP Sobolew @@ -14,11 +14,14 @@ -# ---------------------------------------- # Import bibliotek zewnętrznych # ----------------------------------------- # +# ----------------------------------- # Import bibliotek zewnętrznych i modułów # ------------------------------------ # -from tkinter import messagebox as TKmsb +# Biblioteki zewnętrzne import sys as SS +# Biblioteki zewnętrzne interfejsu graficznego +from tkinter import messagebox as TKmsb + @@ -35,12 +38,16 @@ def Err(KodBledu): if KodBledu[1]: SS.exit(0) + + # Okno dialogowe informacyjne def Inf(KodInformacji): TKmsb.showinfo('Informacja', KodInformacji[0]) if KodInformacji[1]: SS.exit(0) + + # Okno dialogowe zapytania def Ask(KodZapytania): if TKmsb.askokcancel('Pytanie', KodZapytania): diff --git a/components/load_config.py b/components/load_config.py index 5860cb6..1653dec 100644 --- a/components/load_config.py +++ b/components/load_config.py @@ -1,6 +1,6 @@ """ # GeneratorCSV -# Wersja 4.0: UC 1 +# Wersja 4.0: UC 2 # by Mateusz Skoczek # luty 2019 - grudzień 2019 # dla ZSP Sobolew @@ -10,11 +10,106 @@ # """ -def read(): - with open('.\config.cfg') as cfg: - cfg = cfg.read().split('\n') - settings = [] - for x in cfg -def edit(): - pass + + + + + + +# ----------------------------------------- # Definicja kodów dialogowych # ------------------------------------------ # + +E000x01 = "Brak modułu wywołującego okna dialogowe ('dialog.py').\nPrzywróć plik. (E000x01)" +E001x01 = ["Brak pliku konfiguracyjnego ('config.cfg').\nPrzywróć plik. (E001x01)", True] +E002x00 = ["Bład pliku konfiguracyjnego ('config.cfg').\nNiepoprawna ilość wierszy w pliku\nPrzywróć plik. (E002x00)", True] +E002x01 = ["Bład pliku konfiguracyjnego ('config.cfg').\nNiepoprawne dane w wierszu 1\nPrzywróć plik. (E002x01)", True] +E002x02 = ["Bład pliku konfiguracyjnego ('config.cfg').\nNiepoprawne dane w wierszu 2\nPrzywróć plik. (E002x02)", True] + + + + + + + + + +# ----------------------------------- # Import bibliotek zewnętrznych i modułów # ------------------------------------ # + +# Biblioteki zewnętrzne +import sys as SS + +# Moduły składowe programu +try: + import dialog as MDdlg +except ModuleNotFoundError: + print('Nieoczekiwany wyjatek - nie mozna wygenerowac okna dialogowego bledu\n\nBŁĄD KRYTYCZNY!\n%s') %E000x01 + wait = input('Naciśnij ENTER aby zakończyć') + SS.exit(0) + + + + + + + + +# --------------------------------------------------- # Funkcje # ---------------------------------------------------- # + +# Wewnętrzna funkcja sprawdzająca błędy pliku konfiguracyjnego +def CheckConfig(settings): + # Ilość wierszy + try: + if len(settings) != 2: + error = int('x') + except ValueError: + MDdlg.Err(E002x00) + + # Linia 1 (0/1) + try: + check = int(settings[0]) + if 0 > check > 1: + error = int('x') + except ValueError: + MDdlg.Err(E002x01) + + # Linia 2 (utf-8) + DostepneKodowanieWyjsciowe = ['utf-8'] + try: + if settings[1] not in DostepneKodowanieWyjsciowe: + error = int('x') + except ValueError: + MDdlg.Err(E002x02) + + + +# Odczytywanie ustawień z pliku konfiguracyjnego +def read(): + try: + check = open('.\config.cfg') + except FileNotFoundError: + MDdlg.Err(E001x01) + else: + with open('.\config.cfg', 'r') as cfg: + config = cfg.read().split('\n') + settings = [] + for x in config: + settings.append(x.split(': ')[1]) + CheckConfig(settings) + return settings + + + +# Zapis ustawień do pliku konfiguracyjnego +def edit(settings): + CheckConfig(settings) + try: + check = open('.\config.cfg') + except FileNotFoundError: + MDdlg.Err(E001x01) + else: + SettingsToSave = [] + SettingsToSave.append('Ciemny motyw(0/1): ' + str(settings[0]) + '\n') + SettingsToSave.append('Kodowanie wyjsciowe: ' + str(settings[1])) + with open('.\config.cfg', 'w') as cfg: + for x in SettingsToSave: + cfg.write(x) \ No newline at end of file diff --git a/components/main.py b/components/main.py index f84fc20..b686366 100644 --- a/components/main.py +++ b/components/main.py @@ -1,6 +1,6 @@ """ # GeneratorCSV -# Wersja 4.0: UC 1 +# Wersja 4.0: UC 2 # by Mateusz Skoczek # luty 2019 - grudzień 2019 # dla ZSP Sobolew @@ -14,6 +14,15 @@ +# -------------------------------------------- # Informacje o programie # -------------------------------------------- # + +Nazwa = 'GeneratorCSV' +Wersja = '4.0: UC 2' + + + + + @@ -21,6 +30,7 @@ E000x01 = "Brak modułu wywołującego okna dialogowe ('dialog.py').\nPrzywróć plik. (E000x01)" E000x02 = ["Brak modułu zarządzającego plikiem konfiguracyjnym ('load_config.py').\nPrzywróć plik. (E000x02)", True] +E001x02 = ["Brak pliku instrukcji ('instruction.txt').\nPrzywróć plik. (E001x02)", False] @@ -35,6 +45,8 @@ E000x02 = ["Brak modułu zarządzającego plikiem konfiguracyjnym ('load_config. import os as OS import sys as SS + + # Moduły składowe programu try: import dialog as MDdlg @@ -42,11 +54,14 @@ except ModuleNotFoundError: print('Nieoczekiwany wyjatek - nie mozna wygenerowac okna dialogowego bledu\n\nBŁĄD KRYTYCZNY!\n%s') %E000x01 wait = input('Naciśnij ENTER aby zakończyć') SS.exit(0) + try: import load_config as MDlcg except ModuleNotFoundError: MDdlg.Err(E000x02) + + # Biblioteki zewnętrzne interfejsu graficznego from tkinter import filedialog as TKfld import tkinter as TK @@ -61,125 +76,201 @@ import tkinter as TK # ------------------------------------- # Uruchomienie interfejsu graficznego # -------------------------------------- # -# Informacje o programie -Nazwa = 'GeneratorCSV' -Wersja = '4.0' #Todo wersja - # Zmienne globalne środowiska graficznego - -CiemnyMotyw = +if int(MDlcg.read()[0]) == 1: + CiemnyMotyw = True +else: + CiemnyMotyw = False SzerokoscOpisu = 17 -SzerokoscPola = 91 +SzerokoscPola = 122 + + + +# Kolorystyka okna +if CiemnyMotyw: + PaletaBarw = ['#1F1F1F', '#191919', '#B8B8B8', '#FFFFFF', '#404040', '#FFFFFF', '#1F1F1F', 1] +else: + PaletaBarw = ['#F0F0F0', '#D4D4D4', '#000000', '#000000', '#A6A6A6', '#000000', '#FFFFFF', 2] + +B_tlo = PaletaBarw[0] +B_tytultlo = PaletaBarw[1] +B_tytultext = PaletaBarw[2] +B_text = PaletaBarw[3] +B_przycisktlo = PaletaBarw[4] +B_przycisktext = PaletaBarw[5] +B_entrytlo = PaletaBarw[6] +B_framewielkosc = PaletaBarw[7] + + + def settings(): SettingsWindow = TK.Tk() - SettingsWindow.title('ustawienia') + SettingsWindow.title('Ustawienia programu') + SettingsWindow.resizable(width = False, height = False) + SettingsWindow.configure() + SettingsWindow.mainloop() + + def main(): # Tworzenie okna głównego MainWindow = TK.Tk() MainWindow.title(Nazwa + ' ' + Wersja) MainWindow.resizable(width = False, height = False) - - Tytul = TK.Label(MainWindow, text='GeneratorCSV', font=('Segoe UI Semilight', 20), borderwidth=7, justify='center', - bg='Gainsboro', width=47) - Tytul.grid(row=0) - - MainWindow.mainloop() -main() - -""" -def gui(): - # Tworzenie okna - OknoGlowne = TK.Tk() - OknoGlowne.title('GeneratorCSV') - OknoGlowne.resizable(width=False, height=False) - - # Nazwa programu + MainWindow.configure(background = B_tlo) - # Tworzenie frame dla ścieżek plików do importu - Ramka1 = TK.LabelFrame(OknoGlowne, text='Pliki do importu zawierające dane') - Ramka1.grid(row=1) + # Tytul + Tytul = TK.Label(MainWindow) + Tytul.config(text = Nazwa) + Tytul.config(width = 41) + Tytul.config(bg = B_tytultlo, fg = B_tytultext) + Tytul.config(font = ('Segoe UI Semilight', 30)) + Tytul.grid(row = 0) + + + # Frame1 - Import + Ramka1 = TK.LabelFrame(MainWindow) + Ramka1.config(text = ' Pliki do importu zawierające dane ') + Ramka1.config(bg = B_tlo, fg = B_text) + Ramka1.config(borderwidth = B_framewielkosc) + Ramka1.grid(row = 1) + # Ścieżka pliku do importu 1 - wiersz1 = 0 + wiersz = 1 text1 = TK.StringVar() - OpisPola1 = TK.Label(Ramka1, text='Plik z danymi (1)', justify='left', width=SzerokoscOpisu) - OpisPola1.grid(row=wiersz1, column=0) - Pole1 = TK.Entry(Ramka1, textvariable=text1, width=SzerokoscPola) - Pole1.grid(row=wiersz1, column=1) + + OpisPola1 = TK.Label(Ramka1) + OpisPola1.config(text = 'Plik z danymi (1)') + OpisPola1.config(width = SzerokoscOpisu) + OpisPola1.config(bg = B_tlo, fg = B_text) + OpisPola1.grid(row = wiersz, column = 0) + + Pole1 = TK.Entry(Ramka1) + Pole1.config(textvariable = text1) + Pole1.config(width = SzerokoscPola) + Pole1.config(bg = B_entrytlo, fg = B_text) + Pole1.grid(row = wiersz, column = 1) def Browse1_Dialog(): - Browse1.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik", - filetypes=(("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*"))) + Browse1.filename = TKfld.askopenfilename(initialdir = "/", title = "Wybierz plik do importu", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*"))) Pole1.delete(0, 'end') Pole1.insert(0, Browse1.filename) - Browse1 = TK.Button(Ramka1, text='...', command=Browse1_Dialog, background='silver', relief='flat') - Browse1.grid(row=wiersz1, column=2, padx=5, pady=3) + Browse1 = TK.Button(Ramka1) + Browse1.config(text = '...') + Browse1.config(command = Browse1_Dialog) + Browse1.config(bg = B_przycisktlo, fg = B_przycisktext, relief='flat', activebackground = B_przycisktlo) + Browse1.grid(row = wiersz, column = 2, padx=5, pady=3) + # Ścieżka pliku do importu 2 - wiersz2 = 1 + wiersz = 2 text2 = TK.StringVar() - OpisPola2 = TK.Label(Ramka1, text='Plik z danymi (2)', justify='left', width=SzerokoscOpisu) - OpisPola2.grid(row=wiersz2, column=0) - Pole2 = TK.Entry(Ramka1, textvariable=text2, width=SzerokoscPola) - Pole2.grid(row=wiersz2, column=1) + + OpisPola2 = TK.Label(Ramka1) + OpisPola2.config(text = 'Plik z danymi (2)') + OpisPola2.config(width = SzerokoscOpisu) + OpisPola2.config(bg = B_tlo, fg = B_text) + OpisPola2.grid(row = wiersz, column = 0) + + Pole2 = TK.Entry(Ramka1) + Pole2.config(textvariable = text2) + Pole2.config(width = SzerokoscPola) + Pole2.config(bg = B_entrytlo, fg = B_text) + Pole2.grid(row = wiersz, column = 1) def Browse2_Dialog(): - Browse2.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik", - filetypes=(("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*"))) + Browse2.filename = TKfld.askopenfilename(initialdir = "/", title = "Wybierz plik do importu", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*"))) Pole2.delete(0, 'end') Pole2.insert(0, Browse2.filename) - Browse2 = TK.Button(Ramka1, text='...', command=Browse2_Dialog, background='silver', relief='flat') - Browse2.grid(row=wiersz2, column=2, padx=5, pady=3) + Browse2 = TK.Button(Ramka1) + Browse2.config(text = '...') + Browse2.config(command = Browse1_Dialog) + Browse2.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat', activebackground = B_przycisktlo) + Browse2.grid(row = wiersz, column = 2, padx = 5, pady = 3) + # Ścieżka pliku do importu 3 - wiersz3 = 2 + wiersz = 3 text3 = TK.StringVar() - OpisPola3 = TK.Label(Ramka1, text='Plik z danymi (3)', justify='left', width=SzerokoscOpisu) - OpisPola3.grid(row=wiersz3, column=0) - Pole3 = TK.Entry(Ramka1, textvariable=text3, width=SzerokoscPola) - Pole3.grid(row=wiersz3, column=1) + + OpisPola3 = TK.Label(Ramka1) + OpisPola3.config(text = 'Plik z danymi (3)') + OpisPola3.config(width = SzerokoscOpisu) + OpisPola3.config(bg = B_tlo, fg = B_text) + OpisPola3.grid(row = wiersz, column = 0) + + Pole3 = TK.Entry(Ramka1) + Pole3.config(textvariable = text3) + Pole3.config(width = SzerokoscPola) + Pole3.config(bg = B_entrytlo, fg = B_text) + Pole3.grid(row = wiersz, column = 1) def Browse3_Dialog(): - Browse3.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik", - filetypes=(("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*"))) + Browse3.filename = TKfld.askopenfilename(initialdir = "/", title = "Wybierz plik do importu", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*"))) Pole3.delete(0, 'end') Pole3.insert(0, Browse3.filename) - Browse3 = TK.Button(Ramka1, text='...', command=Browse3_Dialog, background='silver', relief='flat') - Browse3.grid(row=wiersz3, column=2, padx=5, pady=3) + Browse3 = TK.Button(Ramka1) + Browse3.config(text = '...') + Browse3.config(command = Browse1_Dialog) + Browse3.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat', activebackground = B_przycisktlo) + Browse3.grid(row = wiersz, column = 2, padx = 5, pady = 3) + # Ścieżka pliku do importu 4 - wiersz4 = 3 + wiersz = 4 text4 = TK.StringVar() - OpisPola4 = TK.Label(Ramka1, text='Plik z danymi (4)', justify='left', width=SzerokoscOpisu) - OpisPola4.grid(row=wiersz4, column=0) - Pole4 = TK.Entry(Ramka1, textvariable=text3, width=SzerokoscPola) - Pole4.grid(row=wiersz4, column=1) + + OpisPola4 = TK.Label(Ramka1) + OpisPola4.config(text = 'Plik z danymi (4)') + OpisPola4.config(width = SzerokoscOpisu) + OpisPola4.config(bg = B_tlo, fg = B_text) + OpisPola4.grid(row = wiersz, column = 0) + + Pole4 = TK.Entry(Ramka1) + Pole4.config(textvariable = text4) + Pole4.config(width = SzerokoscPola) + Pole4.config(bg = B_entrytlo, fg = B_text) + Pole4.grid(row = wiersz, column = 1) def Browse4_Dialog(): - Browse4.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik", - filetypes=(("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*"))) + Browse4.filename = TKfld.askopenfilename(initialdir = "/", title = "Wybierz plik do importu", filetypes = (("Pliki txt", "*.txt"), ("Wszystkie pliki", "*.*"))) Pole4.delete(0, 'end') Pole4.insert(0, Browse4.filename) - Browse4 = TK.Button(Ramka1, text='...', command=Browse4_Dialog, background='silver', relief='flat') - Browse4.grid(row=wiersz4, column=2, padx=5, pady=3) + Browse4 = TK.Button(Ramka1) + Browse4.config(text = '...') + Browse4.config(command = Browse1_Dialog) + Browse4.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat', activebackground = B_przycisktlo) + Browse4.grid(row = wiersz, column = 2, padx = 5, pady = 3) - # Tworzenie frame dla plików export - Ramka2 = TK.LabelFrame(OknoGlowne, text='Ustawienia eksportu') - Ramka2.grid(row=2) + + # Frame2 - Eksport + Ramka2 = TK.LabelFrame(MainWindow) + Ramka2.config(text = ' Ustawienia eksportu ') + Ramka2.config(bg = B_tlo, fg = B_text) + Ramka2.config(borderwidth = B_framewielkosc) + Ramka2.grid(row = 2) # Ścieżka folderu do zapisu wygenerowanych plików - text4 = TK.StringVar() - OpisPolaExport = TK.Label(Ramka2, text='Lokalizacja', justify='left', width=SzerokoscOpisu) + textExport = TK.StringVar() + + OpisPolaExport = TK.Label(Ramka2) + OpisPolaExport.config(text = 'Lokalizacja') + OpisPolaExport.config(width = SzerokoscOpisu) + OpisPolaExport.config(bg = B_tlo, fg = B_text, relief = 'flat', activebackground = B_przycisktlo) OpisPolaExport.grid(row=0, column=0) - PoleExport = TK.Entry(Ramka2, textvariable=text4, width=SzerokoscPola) + + PoleExport = TK.Entry(Ramka2) + PoleExport.config(textvariable = textExport) + PoleExport.config(width = SzerokoscPola) + PoleExport.config(bg = B_entrytlo, fg = B_text) PoleExport.grid(row=0, column=1) def BrowseExport_Dialog(): @@ -187,34 +278,56 @@ def gui(): PoleExport.delete(0, 'end') PoleExport.insert(0, BrowseExport.filename) - BrowseExport = TK.Button(Ramka2, text='...', command=BrowseExport_Dialog, background='silver', relief='flat') + BrowseExport = TK.Button(Ramka2) + BrowseExport.config(text='...') + BrowseExport.config(command=BrowseExport_Dialog) + BrowseExport.config(bg = B_przycisktlo, fg = B_przycisktext, relief='flat', activebackground = B_przycisktlo) BrowseExport.grid(row=0, column=2, padx=5, pady=3) + # Przycisk START - Przycisk = TK.Button(OknoGlowne, text='START', justify='center', width=50, relief='flat', background='silver') - command=Main - Przycisk.grid(row=3, pady=15) + def PathPreprocess(): + pass + + PrzyciskSTART = TK.Button(MainWindow) + PrzyciskSTART.config(text = 'START') + PrzyciskSTART.config(command = PathPreprocess) + PrzyciskSTART.config(width = 50) + PrzyciskSTART.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat', activebackground = B_przycisktlo) + PrzyciskSTART.grid(row = 3, pady = 15) + # Pasek dolny - PasekDolny = TK.LabelFrame(OknoGlowne, bd=0, background='Gainsboro') - PasekDolny.grid(row=4) - InfoLabel = TK.Label(PasekDolny, text='GeneratorCSV 3.0 | © Mateusz Skoczek 2019 dla ZSP Sobolew', justify='left', - width=93, anchor='w', background='Gainsboro') + PasekDolny = TK.LabelFrame(MainWindow) + PasekDolny.config(bd = 0, bg = B_tytultlo, fg = B_tytultext) + PasekDolny.grid(row = 4) + + InfoLabel = TK.Label(PasekDolny) + InfoLabel.config(text = 'GeneratorCSV 3.0 | © Mateusz Skoczek 2019 dla ZSP Sobolew') + InfoLabel.config(justify = 'left', anchor='w', width=107) + InfoLabel.config(bg = B_tytultlo, fg = B_tytultext) InfoLabel.grid(row=0, column=0) def InfoOpen(): try: x = open('instrukcja.txt') except FileNotFoundError: - DG.err(E001x03) + MDdlg.Err(E001x02) else: OS.system("notepad instrukcja.txt") - Przycisk = TK.Button(PasekDolny, text='Instrukcja', justify='center', foreground='blue', relief='flat', - command=InfoOpen, background='Gainsboro') - Przycisk.grid(row=0, column=1) + PrzyciskINFO = TK.Button(PasekDolny) + PrzyciskINFO.config(text = 'Instrukcja') + PrzyciskINFO.config(command = InfoOpen) + PrzyciskINFO.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat', activebackground = B_przycisktlo) + PrzyciskINFO.grid(row = 0, column = 1, padx = 5, pady = 5) - TK.mainloop() + PrzyciskUSTAWIENIA = TK.Button(PasekDolny) + PrzyciskUSTAWIENIA.config(text = 'Ustawienia') + PrzyciskUSTAWIENIA.config(command = settings) + PrzyciskUSTAWIENIA.config(bg = B_przycisktlo, fg = B_przycisktext, relief = 'flat') + PrzyciskUSTAWIENIA.grid(row = 0, column = 2, padx = 5, pady = 5) -gui() -""" + MainWindow.mainloop() + +main() \ No newline at end of file diff --git a/config.cfg b/config.cfg index 2e25a57..8d37a77 100644 --- a/config.cfg +++ b/config.cfg @@ -1,2 +1,2 @@ -Ciemny motyw: 1 -Kodowanie: utf-8 \ No newline at end of file +Ciemny motyw(0/1): 0 +Kodowanie wyjsciowe: utf-8 \ No newline at end of file diff --git a/generator.py b/generator.py index 4d64128..e810ba3 100644 --- a/generator.py +++ b/generator.py @@ -1,6 +1,6 @@ """ # GeneratorCSV -# Wersja 4.0: UC 1 +# Wersja 4.0: UC 2 # by Mateusz Skoczek # luty 2019 - grudzień 2019 # dla ZSP Sobolew @@ -28,7 +28,7 @@ E000x00 = "Brak głównego pliku składowego programu ('main.py').\nPrzywróć p -# ---------------------------------------- # Import bibliotek zewnętrznych # ----------------------------------------- # +# ----------------------------------- # Import bibliotek zewnętrznych i modułów # ------------------------------------ # import os as OS import sys as SS