From fe6950342d15ef34132b76b01164943183133de4 Mon Sep 17 00:00:00 2001 From: Mateusz Skoczek Date: Thu, 6 Aug 2020 18:12:58 +0200 Subject: [PATCH] 4.0 Alpha (Build 19346.1) --- .idea/vcs.xml | 6 + .idea/workspace.xml | 17 ++ changelog-UC.txt | 11 +- components/__pycache__/dialog.cpython-38.pyc | Bin 977 -> 1005 bytes .../__pycache__/load_config.cpython-38.pyc | Bin 538 -> 2469 bytes components/dialog.py | 13 +- components/load_config.py | 111 ++++++- components/main.py | 283 ++++++++++++------ config.cfg | 4 +- generator.py | 4 +- 10 files changed, 348 insertions(+), 101 deletions(-) create mode 100644 .idea/vcs.xml 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 8a7dee90d0780d7e880dcfe374ca20a63074b755..057de7db0e717b4fe8f4f464fbb675f1dbb125f6 100644 GIT binary patch delta 245 zcmcb}{+69Dl$V!_0SJ719>?s^6oIsi*g(;XpldE(hP%D?Rf_rLSYEfcIevxx<7?2yDT2!2ss9>UJV5Jc1tY9>; zwS?bKlkpZ;ZfbFHVtQ&)e#K-C#_fy=lMgVOn8rYrhvucE7AZLA=M|R}l_r;D=I6yE z=jRsW=cVSA6vw1wCg$X)>lIYqVs delta 243 zcmaFMevzFol$V!_0SJnYJc_-+Jdsb!H7gSr2GoM$$X648NDVSV>FQmsfbC=&n?K$OU)}Oj!DT(%*jvJE2zB1>{?W$ zFj=2z6Qla%M@;>exS20_03h^*<@NlqmumJ!ksX&SV diff --git a/components/__pycache__/load_config.cpython-38.pyc b/components/__pycache__/load_config.cpython-38.pyc index a0178d6966fb618ee701f430583a9bb57d74e5d6..d0e2ef022b6a1b73d3294f34acc3e594a9744bc6 100644 GIT binary patch literal 2469 zcmb_ePj3@P6rb5Y_Qr8S0wN?(!2+s?E0H=@TeY;RDw0sOC@#f;5X&fCb|&t|&W@Sg zWwR^iP!ft%RjPXFg&u<1OV4}+;!8imUODjrdg-a}jU5OmNLAIf_RZUwo%i0p-|xNg zjggT8f$QAQ&u*V767mcm4qg^Kd8q=FvU1NqCb!Mv3U^z9KEYGZV zuAWbeO0()i%fzo3gcn)`=~IF~KFo%;DW?;t7g=GO)<<}Lca-HHQ%Y8duiYYSm=$+O z{RkUjqcD!KBWw)Dac0#>X*~KBLMoiMKj%J|PAKGD?It`fa~Z5V_IoqsOZJU9y8=^p z5_{1Jc@(5}ttH%)w_vgzg^67$&wgZIw3{+wsmFUeY62En+p+7lYj#cC5p5n93g=;R zQLw0Y-%cHw?mb|sv%dGhP3%tFYk7RbZV7+QYev#>lXXAYfF02i1bA6GEqg=ljO;jx zMelxu8+lXMqUAd_^PIM5ikREe7y9~4C%I6XDO{6j63eGg_8ux9GxqdCxm?~X&z7Pq z`-ahZ^r~w#Jbl4c(agAO%{Q8wMN>;r3vKo8J4|``7sjd{?}(0cVhG-Ai{2v$F!mtp zX=2BHBZtRc*({e!5&Q4{xXm1&gOk3y$ew+pBS_N!>8SEXN0riZ_#je^>L@*~=;g(Z z56MW@fpsn5m+x`lKne+qlP1zt#E$zK`~cgXHfK?xaJl#0-p;&z_4>-v%3Qs=a<=ex z5S>Buj_dUv`QEy{P+eNMZaYBi)M<&{j+-WX4_%6p3@!skEZ#Y|gFiu}lOgGnZOUj% zmlGir@iyI}P?)C;5^7MGAM^_|)OU^0d|8BPIiy{}^eNc81%=<$45E{kA?wTlx#k;` z_|_rzzCU0u_tG9Sn{-Q0C&8vMMY?(`FMmH|_uhfs2U`Mx($7_&Yw$%G-IVyr&rzgi z6s}$Tuw-R=oBNsW`C(SL>9ixhAf=F*xj4_-%}j@M49YLf#!NB8IDQFzP6SNAUy6g&YGO@06+Er!tJ z0ctX!1_f%oGXO)|)k9+dW#bmXH-SdlPhW1)F5NXBlU+Cg9s^C9WDAHgPi{|c8C`uh z-!)(bb~1B{;QqVS(CX^jpmp_SqLKH>*W^0+4Zy__I)5MLzl$@F1pG+sWEqtiEu`8d zTOzwlLzy8ufc5wlug$9>ydol>DYPXrUk-s#$YQ6<49OjqnE|xSFv~d|*vV8rN~S!5 zZ|dkG*LNpJ(14Btk?o6d)TTh(ggcl3K~!cT-x_A!pcb8gTfOs2F=Cc68kOZ=K#~?s54R?l=U9%;3xm zo3J`S!g_&)K~Dk>MMUB(te1{v`PEe>+|^aZ20TLhfgthaFbeqVgCQkBrqya$u73`z zxU*w;?7zmZ%PFsA2sqA)XJ2RLQ$O)uY WaU8j$ej}Eu-BA_)SkXFVjsFAX>w+}^ delta 333 zcmZ1~Jd4FEl$V!_0SK6mJc_*mq#uJg$bbpRaRB0C2_TWe5XF$fn8MV;5XG3noWcU6 znNnDT88q2Sr%l`^!)&Z)IPr0nMKVw+3Sb2CoPoHQ1xTbY1T(B;^jpbL1Tq^zeD$B~ z&uYS=05oLsTvq9NmZH?e6kd=nkU9p&B9LanMi+rBLzs%hVg^dwVo6QOED->*V5YJH t*?yYLx7g$3Q}UDJ 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