From e16844fcce6f77403a052628dcb94f0793fde1c0 Mon Sep 17 00:00:00 2001 From: Mateusz Skoczek Date: Thu, 6 Aug 2020 18:10:55 +0200 Subject: [PATCH] 4.0 Alpha (Build 19346) --- ...{GeneratorCSV.iml => GeneratorCSV 3.1.iml} | 2 +- .idea/modules.xml | 2 +- .idea/workspace.xml | 47 +-- __pycache__/format.cpython-36.pyc | Bin 2070 -> 0 bytes __pycache__/format.cpython-38.pyc | Bin 2019 -> 0 bytes __pycache__/moduly.cpython-36.pyc | Bin 1689 -> 0 bytes __pycache__/moduly.cpython-38.pyc | Bin 1720 -> 0 bytes changelog-UC.txt | 6 + changelog.txt | 1 + components/__pycache__/dialog.cpython-38.pyc | Bin 0 -> 977 bytes .../__pycache__/load_config.cpython-38.pyc | Bin 0 -> 538 bytes components/dialog.py | 49 +++ components/load_config.py | 20 + components/main.py | 220 ++++++++++ config.cfg | 1 + format.py | 141 ------- generator.py | 399 +----------------- instrukcja.txt => instruction.txt | 0 moduly.py | 51 --- 19 files changed, 326 insertions(+), 613 deletions(-) rename .idea/{GeneratorCSV.iml => GeneratorCSV 3.1.iml} (79%) delete mode 100644 __pycache__/format.cpython-36.pyc delete mode 100644 __pycache__/format.cpython-38.pyc delete mode 100644 __pycache__/moduly.cpython-36.pyc delete mode 100644 __pycache__/moduly.cpython-38.pyc create mode 100644 changelog-UC.txt create mode 100644 components/__pycache__/dialog.cpython-38.pyc create mode 100644 components/__pycache__/load_config.cpython-38.pyc create mode 100644 components/dialog.py create mode 100644 components/load_config.py create mode 100644 components/main.py delete mode 100644 format.py rename instrukcja.txt => instruction.txt (100%) delete mode 100644 moduly.py diff --git a/.idea/GeneratorCSV.iml b/.idea/GeneratorCSV 3.1.iml similarity index 79% rename from .idea/GeneratorCSV.iml rename to .idea/GeneratorCSV 3.1.iml index a94fbfe..9c88284 100644 --- a/.idea/GeneratorCSV.iml +++ b/.idea/GeneratorCSV 3.1.iml @@ -2,7 +2,7 @@ - + diff --git a/.idea/modules.xml b/.idea/modules.xml index 1b13c30..84256e7 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index aaff619..396011c 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,7 +1,7 @@ - + - + - - + - + - - - - @@ -89,16 +65,12 @@ - - 1574872723273 + + 1575129057993 @@ -106,7 +78,6 @@ - - + \ No newline at end of file diff --git a/__pycache__/format.cpython-36.pyc b/__pycache__/format.cpython-36.pyc deleted file mode 100644 index 14c6217d47956ff78f6aa4560e6f5f12594afe2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2070 zcmbVN%~K;)5P$vVlMu297!pK8MKp@I?yhbX<;Rww*4AP?;4YeivWD~!Lc&aVGZbWM za$>#nZ|I-lpYcvsdCEnrJZ@QP_k_gV6)w)y^y}$)uRnj?b9-VU=l=f7?$6Ug{3@Qh zB=Ps?iS7_VfzTE;K#9ghRoNkmYL(Rpc{~UU7b|*I2#<|=OyURV93bG`AkY#ab##Sn`6K~Lo z<>86rW4Q5#k&bFjF7@a$ya}!u-$eua$2JNy)&6cBn z8t%dyIEgRd6i(v|zKBJf#S)fr4qw7~d>I$;6a8axeq8tNKQgRfyR6+l^6RbQL?zz3hRmA+S%}}#bZpu8U_h`omYwRtjF2mYAV$Rl5 zK}fho*jkAR%_uW$Ef6x`5Mp_WDT^>wWb6?NjpO3BIJOBNTsga%l}oW!#ihwIqLzrO znCdMSRG7TYztO4KOSmRa+cs4U$4Q zYIi;9J|w&aSLS{Qvdys34A|3%JCQwir3q6~-KDot>bW<$mRaf_Q@c{C2}b0RXowzM zz*)cmyMSHn$?jwfslP6YP16g`a{^8%EcO44WXAfzEj zS8_46>^8Ue(WV$`gC5Nj*Z-5|UH>m0damLQ%OIk2kG%GY|G843%4SE_YKno7 zRbJa(r{f1$8Kd8uM`JGEQHdX)hAN?!sw_q+l6KIAj+FuBQu8&iG2w)aTNa1&{>00`rCq^DskC2}*_weCOzU-k2Flay0D~TLj3h|`ve=^R_F!o*PmR-lS-TXh$aI`%D diff --git a/__pycache__/format.cpython-38.pyc b/__pycache__/format.cpython-38.pyc deleted file mode 100644 index 4cdd0af50da72ebf8ddab98f7992a21c49367ba2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2019 zcmZ`)-A^P%5bx^wWLZ935LiS+MRfJV^DF9U^dg*w9N9C$JC#7pur;iEyUZ*-gSeAf zU(oma6Tml~{SWlN=qD2sll8?XUyM%(3`35sqL=%RrRlG?v9KU1P%X>U$%dm z5aL&Ud3Z>Axk*p*1_=}hEwKqG(fUqoO0?0T*+LgRnr-xPh-L>1I83vPupuhN9-S1` z8t`;BT$-ooS)nKSokS{faSRA2a75OdmYPk;#}RZPwb;v%Tov0(U6~8=CBBzsacrkf zE|2I0dbEG>eEQh~Zk&+FEZ2UH` zAt)b9)xTh&$9dK8jpD5I_zHSv^)HRy5Wo5?JQkd+p2NZ>q2-4gn{xe*hCsuPhMES{ z5Ng=fP}lI4hK7dw8k!nf8um0q8e$D?4N60zA=PlGp`#(IxY}xkk#>@HtC4D}5vAHu zK~xX5z1xUTTS=;D6WrGJPAfpg?l&i*gS}97zKj|n#@S)qilcDTO|oX(>TLQkV%7*+ zol~J+rrm$OOXAjztvgY;sv2L1TWe7iZhfNS`(ZQfEVNZzSHa%TKOSy<97drE(par* z+}qlX)n1S;w>!GH(N@7BX17~G5{!_sWS)e868LfyW}zTU(uZ-HeaX7(vIy!G+Hrwy z44kuQ==L@(azTVxCUOy>Q5tg16FuMri|< zCMl=3dV$v!7B8}Ro}gDD8ABdQDzqHq?3+%Iql>N*`!uac-(8rH6cHhczcZLbkB z>Vz{W`k>yVRgEcpJ{S}SX+YheMGk6)N&w2jl=BRMopYMG0jTM3sj>mr{uykdYA zyJ|A4;lO~aKtG#=c3t}`S?6vo3!_W3dCr#gxZa33afxYe#1CKEP?G8$(p^XoXC}*dmq9g1QNUe`s~>FGS>iF3_en zVm|<7=aOtWbPe3Ds2$KspvO^DdvI8b?liRs^vhzJb^qV*^_yMS9sEao&upxu4rd63B1v<{rP*oi5$iv6qVzIG{tL$c z)qc;t+K+hUkHv5`lZAq*v5!8@X(vwNouFR{+#S?QEM8;5Up@5} zi$@A~Xkg(3`Zr<93+h6)EPy1wjq=)ZVGbtgnSmM0r-JrLI|@Z>a-blgn6Z;!Dm diff --git a/__pycache__/moduly.cpython-36.pyc b/__pycache__/moduly.cpython-36.pyc deleted file mode 100644 index d94317453ba9ae5815eb41511683f4b5882d24f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1689 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 literal 0 HcmV?d00001 diff --git a/components/__pycache__/load_config.cpython-38.pyc b/components/__pycache__/load_config.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0178d6966fb618ee701f430583a9bb57d74e5d6 GIT binary patch literal 538 zcmah_%}T>S5Z*MYmSDl7$AzAHuvk4QB0?4M&>sjYlt|cS*OI^8ut_Y*QQBAV9eVZ= zY~Mk8)MxPSY(N@M4$RLt!|eCX-Zh&h0;{b)A3q>}DNwZj| zbQo+5M!j?&s^3@ZP!HPrX4i43a2= , -# - -# Przykład: -# 1a BS Nowak, Adam 1234567u -# - - -# Format danych dla nauczycieli: -# , -# - -# Przykład: -# Nowak, Adam 1234567 -# - - - - -# Inne: -# - skrypt akceptuje prefix 'ks.', nieuwzględnia go w przetwarzaniu -# - skrypt akceptuje nazwiska holenderskie (typu 'van X', 'van der X' itp.) i uwzględnia je w przetwarzaniu -# - skrypt nie akceptuje nazwisk złożonych (np. Nowak-Kowalska) -# - skrypt wymaga kodowania ANSI diff --git a/generator.py b/generator.py index f6919a6..4d64128 100644 --- a/generator.py +++ b/generator.py @@ -1,9 +1,14 @@ +""" # GeneratorCSV -# Wersja 3.0.1 +# Wersja 4.0: UC 1 # by Mateusz Skoczek # luty 2019 - grudzień 2019 # dla ZSP Sobolew +# +# Główny skrypt uruchamiający +# +""" @@ -12,28 +17,9 @@ +# ----------------------------------------- # Definicja kodów dialogowych # ------------------------------------------ # -## Defincja błędów ############################################################################## - -# E001 - Brak pliku składowego -E001x00 = "Brak pliku formatu 'moduly.py'.\nPrzywróć plik. (E001x00)" -E001x01 = "Brak pliku formatu 'format.py'.\nPrzywróć plik. (E001x01)" -E001x02 = "Brak pliku konfiguracyjnego 'config.cfg'.\nPrzywróć plik. (E001x02)" -E001x03 = "Brak pliku 'instrukcja.txt'.\nPrzywróć plik. (E001x03)" - -# E002 - Błąd pliku składowego -E002x02 = "Nieokreślony błąd pliku konfiguracyjnego 'config.cfg'.\nPrzywróć domyślny plik lub popraw ustawienia. (E002x02)" -E002x021 = "Błąd pliku konfiguracyjnego 'config.cfg'.\nPodane kodowanie nie jest obsługiwane\nPrzywróć domyślny plik lub popraw ustawienia. (E002x021)" - -# E003 - Błąd lokalizacji plików I/O -E003x01 = "Nie podano lokalizacji plików do importu. (E003x01)" -E003x02 = "Nie podano lokalizacji zapisu wygenerowanych plików. (E003x02)" -E003x111 = "Plik podany w sciezce 1 nie istnieje (E003x111)" -E003x112 = "Plik podany w sciezce 2 nie istnieje (E003x112)" -E003x113 = "Plik podany w sciezce 3 nie istnieje (E003x113)" -E003x114 = "Plik podany w sciezce 4 nie istnieje (E003x114)" - -#_______________________________________________________________________________________________# +E000x00 = "Brak głównego pliku składowego programu ('main.py').\nPrzywróć plik. (E000x00)" @@ -42,21 +28,10 @@ E003x114 = "Plik podany w sciezce 4 nie istnieje (E003x114)" +# ---------------------------------------- # Import bibliotek zewnętrznych # ----------------------------------------- # - -## Import bibliotek zewnętrznych ################################################################ - -import tkinter as tk -import codecs as cd -import os -import time as tm -import sys as ss - -# Definicja składowych biblioteki interfejsu graficznego -from tkinter import filedialog as TKfld -from tkinter import messagebox as TKmsb - -#_______________________________________________________________________________________________# +import os as OS +import sys as SS @@ -65,351 +40,13 @@ from tkinter import messagebox as TKmsb - - -## Weryfikacja istnienia plików składowych programu ############################################# +# ----------------------------------------- # Uruchomienie głównego modułu # ----------------------------------------- # try: - x = open('moduly.py') -except FileNotFoundError: - Message = 'Wystąpił błąd!\n' + E001x00 - tk.showerror('Błąd', Message) - ss.exit(0) - -try: - x = open('format.py') -except FileNotFoundError: - Message = 'Wystąpił błąd!\n' + E001x01 - tk.showerror('Błąd', Message) - ss.exit(0) - -#_______________________________________________________________________________________________# - - - - - - - - - - -## Import modułów programu ###################################################################### - -# Import modułów składowych programu -from moduly import ErrorDialog as MDerr -from moduly import FileCheck as MDfck -from moduly import PolishLetterRemover as MDplr -from moduly import ClassTagCreator as MDctc - -# Import skryptu przetwarzającego dane -import format as ft - -#_______________________________________________________________________________________________# - - - - - - - - - - - -## Weryfikacja istnienia plików składowych ###################################################### - -MDfck('format.py', E001x01) -MDfck('config.cfg', E001x02) -MDfck('instrukcja.txt', E001x03) - -#_______________________________________________________________________________________________# - - - - - - - - - - - -## Wczytywanie pliku konfiguracyjnego ########################################################### - -try: - with open('config.cfg', 'r') as config: - config = config.read().split('\n') - Kodowanie = str(config[0].strip('Kodowanie: ')) - TypyKodowania = ['utf-8', 'cp1252', 'iso-8859-1'] - if Kodowanie not in TypyKodowania: - MDerr(E002x021) + fck = open("components\main.py") except: - MDerr(E002x02) - -#_______________________________________________________________________________________________# - - - - - - - - - - - -## Inicjacja skryptu przetwarzającego dane ###################################################### - -def Main(): - if TKmsb.askokcancel('Ostrzeżenie', "Czy na pewno chcesz rozpocząć generowanie?\nProgram utworzy w podanej lokalizacji pliki 'email.csv' i 'office.csv'.\nJeżeli w podanej lokalizacji istnieją pliki o takich nazwach zostaną one nadpisane."): - sciezka1 = Pole1.get() - sciezka1_puste = True - sciezka2 = Pole2.get() - sciezka2_puste = True - sciezka3 = Pole3.get() - sciezka3_puste = True - sciezka4 = Pole3.get() - sciezka4_puste = True - sciezkaExport = PoleExport.get() - sciezkaExport_puste = True - - if sciezka1 != '': - sciezka1_puste = False - if sciezka2 != '': - sciezka2_puste = False - if sciezka3 != '': - sciezka3_puste = False - if sciezka4 != '': - sciezka4_puste = False - if sciezkaExport != '': - sciezkaExport_puste = False - - if sciezka1_puste and sciezka2_puste and sciezka3_puste and sciezka4_puste: - MDerr(E003x01) - if sciezkaExport_puste: - MDerr(E003x02) - - KontenerDanych = [] - if not sciezka1_puste: - try: - x = open(sciezka1) - except FileNotFoundError: - MDerr(E003x111) - else: - with open(sciezka1, 'r') as plik1: - KontenerDanych += ft.przetworz(plik1.read()) - if not sciezka2_puste: - try: - x = open(sciezka2) - except FileNotFoundError: - MDerr(E003x112) - else: - with open(sciezka2, 'r') as plik2: - KontenerDanych += ft.przetworz(plik2.read()) - if not sciezka3_puste: - try: - x = open(sciezka3) - except FileNotFoundError: - MDerr(E003x113) - else: - with open(sciezka3, 'r') as plik3: - KontenerDanych += ft.przetworz(plik3.read()) - if not sciezka4_puste: - try: - x = open(sciezka4) - except FileNotFoundError: - MDerr(E003x114) - else: - with open(sciezka4, 'r') as plik4: - KontenerDanych += ft.przetworz(plik4.read()) - - KontenerEmail = [] - KontenerOffice = [] - for osoba in KontenerDanych: - if osoba[-1]: - Klasa = osoba[0] - Imie = osoba[2] - Inicjaly = Imie[0] - Nazwisko = '' - NazwiskoDoEmaila = '' - for x in osoba[1]: - Nazwisko += x + ' ' - NazwiskoDoEmaila += ('.' + x) - Inicjaly += x[0] - Nazwisko = Nazwisko[:-1] - ZnacznikKlasy = MDctc(Klasa) - Login = osoba[3] - Adres = MDplr(Imie).lower() + MDplr(NazwiskoDoEmaila).lower() + ZnacznikKlasy + '@losobolew.pl' - Email = Adres + ',' + Login + ':' + MDplr(Inicjaly) + ',500' - Office = Adres + ',' + Imie + ',' + Nazwisko + ',' + Imie + ' ' + Nazwisko + ',uczeń,' + Klasa + ',,,,,,,,,Rzeczypospolita Polska' - KontenerEmail.append(Email) - KontenerOffice.append(Office) - else: - Imie = osoba[1] - Inicjaly = Imie[0] - Nazwisko = '' - NazwiskoDoEmaila = '' - for x in osoba[0]: - Nazwisko += x + ' ' - NazwiskoDoEmaila += ('.' + x) - Inicjaly += x[0] - Nazwisko = Nazwisko[:-1] - Login = osoba[2] - Adres = MDplr(Imie).lower() + MDplr(NazwiskoDoEmaila).lower() + '@losobolew.pl' - Email = Adres + ',' + Login + ':' + MDplr(Inicjaly) + ',500' - Office = Adres + ',' + Imie + ',' + Nazwisko + ',' + Imie + ' ' + Nazwisko + ',nauczyciel,,,,,,,,,,Rzeczpospolita Polska' - KontenerEmail.append(Email) - KontenerOffice.append(Office) - sciezkaEmail = sciezkaExport + '/email.csv' - sciezkaOffice = sciezkaExport + '/office.csv' - with cd.open(sciezkaEmail, 'w', Kodowanie) as plikEmail: - for x in KontenerEmail: - plikEmail.writelines(x + '\n') - plikEmail.close() - with cd.open(sciezkaOffice, 'w', Kodowanie) as plikOffice: - for x in KontenerOffice: - plikOffice.writelines(x + '\n') - plikOffice.close() - TKmsb.showinfo('Zakończono', 'Operacja zakończona pomyślnie') - ss.exit(0) - else: - ss.exit(0) - - -#_______________________________________________________________________________________________# - - - - - - - - - - - -## Inicjacja okna ############################################################################### - -# Zmienne globalne środowiska graficznego -SzerokoscOpisu = 17 -SzerokoscPola = 91 -TytulProgramu = 'GeneratorCSV' -Autorzy = 'Mateusz Skoczek' -Wersja = '3.0.1' -Lata = '2019' - -# Tworzenie okna -OknoGlowne = tk.Tk() -OknoGlowne.title(TytulProgramu) -OknoGlowne.resizable(width = False, height = False) - -# Nazwa programu -Tytul = tk.Label(OknoGlowne, text = TytulProgramu, font = ('Segoe UI Semilight', 20), borderwidth = 7, justify = 'center', bg = 'Gainsboro', width = 47) -Tytul.grid(row = 0) - - -# Tworzenie frame dla ścieżek plików do importu -Ramka1 = tk.LabelFrame(OknoGlowne, text = 'Pliki do importu zawierające dane') -Ramka1.grid(row = 1) - -# Ścieżka pliku do importu 1 -wiersz1 = 0 -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) -def Browse1_Dialog(): - Browse1.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik", 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) - -# Ścieżka pliku do importu 2 -wiersz2 = 1 -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) -def Browse2_Dialog(): - Browse2.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik", 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) - -# Ścieżka pliku do importu 3 -wiersz3 = 2 -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) -def Browse3_Dialog(): - Browse3.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik", 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) - -# Ścieżka pliku do importu 4 -wiersz4 = 3 -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 = text4, width = SzerokoscPola) -Pole4.grid(row = wiersz4, column = 1) -def Browse4_Dialog(): - Browse4.filename = TKfld.askopenfilename(initialdir="/", title="Wybierz plik", 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) - - -# Tworzenie frame dla plików export -Ramka2 = tk.LabelFrame(OknoGlowne, text = 'Ustawienia eksportu') -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) -OpisPolaExport.grid(row = 0, column = 0) -PoleExport = tk.Entry(Ramka2, textvariable = text4, width = SzerokoscPola) -PoleExport.grid(row = 0, column = 1) -def BrowseExport_Dialog(): - BrowseExport.filename = TKfld.askdirectory() - PoleExport.delete(0, 'end') - PoleExport.insert(0, BrowseExport.filename) -BrowseExport = tk.Button(Ramka2, text = '...', command = BrowseExport_Dialog, background = 'silver', relief = 'flat') -BrowseExport.grid(row = 0, column = 2, padx = 5, pady = 3) - - -# Przycisk START -Przycisk = tk.Button(OknoGlowne, text = 'START', justify = 'center', width = 50, command = Main, relief = 'flat', background = 'silver') -Przycisk.grid(row = 3, pady = 15) - - -# Pasek dolny -PasekDolny = tk.LabelFrame(OknoGlowne, bd = 0, background = 'Gainsboro') -PasekDolny.grid(row = 4) -info = TytulProgramu + ' ' + Wersja + ' | © ' + Autorzy + ' '+ Lata + ' dla ZSP Sobolew' -InfoLabel = tk.Label(PasekDolny, text = info, justify = 'left', width = 93, anchor = 'w', background = 'Gainsboro') -InfoLabel.grid(row= 0, column = 0) -def InfoOpen(): - try: - x = open('instrukcja.txt') - except FileNotFoundError: - MDerr(E001x03) - 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) - - -tk.mainloop() - -#_______________________________________________________________________________________________# + print('Nieoczekiwany wyjatek - nie mozna wygenerowac okna dialogowego bledu\n\nBŁĄD KRYTYCZNY!\n%s') % E000x00 + wait = input('Naciśnij ENTER aby zakończyć') + SS.exit(0) +else: + OS.system("components\main.py") diff --git a/instrukcja.txt b/instruction.txt similarity index 100% rename from instrukcja.txt rename to instruction.txt diff --git a/moduly.py b/moduly.py deleted file mode 100644 index d98987d..0000000 --- a/moduly.py +++ /dev/null @@ -1,51 +0,0 @@ -import sys as ss -import time as tm -from tkinter import messagebox as TKmsb - -def ErrorDialog(KodBledu): - Message = 'Wystąpił błąd!\n' + KodBledu - TKmsb.showerror('Błąd', Message) - ss.exit(0) - -def FileCheck(Plik, KodBledu): - try: - x = open(Plik) - except FileNotFoundError: - ErrorDialog(KodBledu) - -def PolishLetterRemover(text): - text1 = text.replace('ę', 'e') - text2 = text1.replace('ó', 'o') - text3 = text2.replace('ą', 'a') - text4 = text3.replace('ś', 's') - text5 = text4.replace('ł', 'l') - text6 = text5.replace('ż', 'z') - text7 = text6.replace('ź', 'z') - text8 = text7.replace('ć', 'c') - text9 = text8.replace('ń', 'n') - text10 = text9.replace('Ę', 'E') - text11 = text10.replace('Ó', 'O') - text12 = text11.replace('Ą', 'A') - text13 = text12.replace('Ś', 'S') - text14 = text13.replace('Ł', 'L') - text15 = text14.replace('Ż', 'Z') - text16 = text15.replace('Ź', 'Z') - text17 = text16.replace('Ć', 'C') - text = text17.replace('Ń', 'N') - return text - -def ClassTagCreator(Klasa): - czas = tm.localtime() - miesiac = czas[1] - if miesiac >= 9: - rokpodst = czas[0] - else: - rokpodst = czas[0] - 1 - nrklasy = int(Klasa[0]) - literaklasy = Klasa[1] - szkola = Klasa.split(' ')[1] - if szkola == 'BS': - znacznik = str((4 - nrklasy) + rokpodst) + szkola - else: - znacznik = str((5 - nrklasy) + rokpodst) + literaklasy - return znacznik \ No newline at end of file