Tie vrchne komentare mas len s jednymi uvodzovkami (aspon mne sa to tak zobrazilo).Tymto si, defakto, vytvoril string a nie komentar :)
azur ______________________________________________________________ > Od: "Roman Beno" <romanbeno...@gmail.com> > Komu: Konference PyCZ <python@py.cz> > Dátum: 13.01.2013 08:09 > Predmet: Re: [python]otázka ohladom mojho ?týlu písania v OOP > >To iné odsadenie vzniklo iba"zdeformovaním" textu s pri kopírke z editoru >(zalomenie riadkov, odsadenia atd) > > >Dňa 12. január 2013 22:47, David Rohleder <da...@ics.muni.cz> napísal(-a): > >> Zdá se mně to, nebo používáš v každé úrovni jiné odsazení? >> >> >> Roman Beno píše v So 12. 01. 2013 v 18:08 +0100: >> > >> > Dobrý deň, >> > >> > chcel by som sa spýtať na váš názor ohľadne môjho štýlu písania >> > programov v OOP. >> > Rád prijmem akukolvek kritiku, mojim cielom je sa v tomto ohľade >> > zlepšit a v tejto oblasti som si nie som príliš istý. >> > >> > Tu sú ukážky mojich kódov: >> > >> > # -*- coding: utf-8 -*- >> > #################Definícia triedy####################### >> > class Fibonacci: >> > "Fibonacciho trieda" >> > def __init__(self,a=0,b=1,pocet_cisiel=10,default=0): >> > "Vyrobíme stavebný materiál pre fibonaccciho postupnosť." >> > self.a=a >> > self.b=b >> > self.pocet_cisiel=pocet_cisiel >> > self.default=default >> > def proces(self): >> > print(self.a,self.b,end=" ") >> > while True: >> > self.a=(self.a+self.b) >> > self.default+=1 >> > if self.default>=self.pocet_cisiel: >> > print("\n") >> > break >> > print(self.a,end=" ") >> > # postupnost bude a,b,a,b,a,b... tento blok je pre všetky >> > a >> > self.b=(self.a+self.b) >> > self.default+=1 >> > if self.default>=self.pocet_cisiel: >> > print("\n") >> > break >> > print(self.b,end=" ") >> > # a tento pre všetky b >> > #################Hlavný program########################## >> > MojaInstancia=Fibonacci(pocet_cisiel=20) >> > MojaInstancia.proces() >> > >> > >> ************************************************************************************************************ >> > Tu je další: >> > >> > # -*- coding: utf-8 -*- >> > # program Záznamník adries >> > # tréning Tkinter + OOP >> > # autor JA, dnes >> > # ver. 1.0 >> > # * opravená chyba pri vytvárani poľa pre zadávaní adresy, použitá >> > neexistujúca farba okna >> > # * opravená chyba pri vytváraní tlačítka ukončujúceho okno zadávania, >> > použitý neexistujúci názov prvku >> > # * zmenené umiestnenie a veľkosť tlačítka pre zavretie okna pri >> > pridávaní adries >> > # ver. 1.1 >> > # * opravená chyba pri potvrdení voľby mena pri pridávaní mena, >> > použitá neexistujúca premenná >> > # * opravená chyba pri potvrdení voľby mena pri pridávaní adresy, >> > použitá neexistujúca premenná >> > # ver. 1.2 >> > # * polia pre zadávaní mena aj adresy sa po zadaní oboch údajov teraz >> > vymažú (ich hodnota)m >> > # uživatel ich teraz nemusí zadávať sám >> > # * opravená chyba pri načítaní údajov zo zoznamu, použitá >> > neexistujúca premenná >> > # ver. 1.2.1 >> > # * opravená chyba pri zobrazovaní načítaných údajov,použitá >> > neexistujúca premenná >> > # ver. 1.3 >> > # * opravená chyba pri vytváraní tlačítka na zavretie okna načítania >> > údajov, použitá neexistujúca >> > # premenná >> > # * opravená chyba pri zobrazovaní načítaných údajov (druhá chyba v >> > tomto), použitá neexistujúca premenná >> > # * zmenený text niektorých tlačítok v úvodnom menu >> > # * v popisku okna sa teraz zobrazuje aj aktuálna verzia programu >> > # ver. 1.3.1 >> > # * pri načítaní údajov upravená oddelovacia čiara údajov >> > # * zmenené rozmery tlačítka ukončujúceho okno načítania údajov >> > # ver. 1.3.2 >> > # * v okne ukladania súboru zmenená farba informačného textu na >> > prehľadnejšiu >> > # * opravená chyba pri ukladaní súborov, použitá neexistujúca premenná >> > # ver. 1.4 >> > # * opravená chyba pri ukladaní súborov, použitá ďalšia neexistujúca >> > premenná >> > # * zmenená farba riadku pre chybové hlásenia v okne ukladania dát na >> > prirodzenú bledomodrú >> > # * pridaná možnosť odstránenia položiek zo zoznamu >> > >> > >> > from tkinter import * >> > import sys >> > import os >> > >> > class Zaznamnik: >> > "Toto je trieda môjho záznamníku" >> > >> > def __init__(self): >> > self.hlavneOkno=Tk() >> > self.hlavneOkno.title("Záznamník, Ver. 1.4") >> > self.adresy=[] >> > self.zoznamMena=[] >> > >> > def program(self): >> > "Táto časť programu bude mať za úlohu čisto len grafiku >> > hlavného menu (nie logiku)." >> > >> > >> self.HOuvodnypopisokLabel=Label(self.hlavneOkno,bg="lightblue",text="Vitajte >> v mojom záznamníku adries.\nDúfam, že sa vám bude páčiť.") >> > self.HOuvodnypopisokLabel.grid(row=0,column=0,sticky=W+E+N+S) >> > # uvodny popisok - label - ktorý nás privíta v programe >> > >> > >> self.HOtlacitkoZadavatAdresy=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Pridať >> adresy do záznamníka") >> > self.HOtlacitkoZadavatAdresy.grid(row=1,column=0,sticky=W+E+N >> > +S) >> > # tlačítko, ktoré by malo umožniť zadávanie adries >> > >> > >> self.HOtlacitkoOdstranitAdresy=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Odstrániť >> adresu zo záznamníka") >> > self.HOtlacitkoOdstranitAdresy.grid(row=2,column=0,sticky=W+E >> > +N+S) >> > # tlačítko, ktoré by malo umožniť odstránenie adries >> > >> > >> self.HOtlacitkoUlozit=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Uložiť >> do súboru") >> > self.HOtlacitkoUlozit.grid(row=3,column=0,sticky=W+E+N+S) >> > # tlačítko, ktoré by malo umožnit uloženie do súboru >> > >> > >> self.HOtlacitkoNacitat=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Načítať >> dáta zo zoznamu") >> > self.HOtlacitkoNacitat.grid(row=4,column=0,sticky=W+E+N+S) >> > # tlačítko, ktoré by malo umožniť načítanie dát zo súboru >> > >> > >> self.HOtlacitkoNapoveda=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Zobrazenie >> nápovedy") >> > self.HOtlacitkoNapoveda.grid(row=5,column=0,sticky=W+E+N+S) >> > # tlačítko, ktoré by malo zobraziť nápovedu >> > >> > >> self.HOtlacitkoUkoncit=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Ukončiť >> program",command=self.hlavneOkno.quit) >> > self.HOtlacitkoUkoncit.grid(row=6,column=0,sticky=W+E+N+S) >> > # tlačítko, ktoré by malo ukončiť program >> > >> > def zadavanie_adries(): >> > "Táto časť bude zachytávať logiku programu. Kvoli velkému >> > rozsahu rozdelenú na niekoľko častí. Konkrétne zadávanie adries." >> > # prvá časť tejto funkcie >> > # vzhľad podokna na zadávanie >> > self.OknoZadavanie=Toplevel() >> > self.OknoZadavanie.title("Zadávanie adries") >> > >> > self.OknoZadavanieLabel=Label(self.OknoZadavanie,bg="lightblue",text=" >> > Aktuálna činnosť: Zadávanie adries \nPre potvrdenie >> > údaju z okna stlačte ENTER.\n") >> > >> > self.OknoZadavanieLabel.grid(row=0,column=0,columnspan=4,sticky=W+E+N >> > +S) >> > # Vytvorenie podokna na zadávanie adries, nastavený >> > titulok + úvodný Label >> > self.VarPPCH=StringVar() >> > >> > >> self.OknoZadavanieLabelChybHlasky=Label(self.OknoZadavanie,bg="lightblue",textvariable=self.VarPPCH) >> > >> > >> self.OknoZadavanieLabelChybHlasky.grid(row=1,column=0,columnspan=4,sticky=W+E+N+S) >> > # Vytvorená textová premenná pre prípadné chybové hlášky. >> > Pre začiatok sa bude tváriť ako >> > # neviditeľná súčasť okna >> > >> > self.RamecZadajMeno=Frame(self.OknoZadavanie,bd=3,bg="lightblue") >> > >> > self.RamecZadajMeno.grid(row=2,column=0,columnspan=4,sticky=W+E+N+S) >> > self.VarPZM=StringVar() >> > # Vytvorený rámec pre zadanie mena + popisok k nemu. >> > Taktiež premenná pre políčko >> > # pre vstup >> > >> > self.RamecPopisokPola=Label(self.RamecZadajMeno,text="Zadajte meno >> > dotyčného:",bg="lightblue") >> > self.RamecPopisokPola.grid(row=2,column=0,sticky=W+E+N+S) >> > >> > >> self.PolePreVstupMena=Entry(self.RamecZadajMeno,bg="lightyellow",textvariable=self.VarPZM,font="Arial >> 8") >> > >> > self.PolePreVstupMena.grid(row=2,column=1,columnspan=3,sticky=W+E+N+S) >> > # Vytvorený popisok pre pole pre vstup + políčko samotné >> > >> > self.RamecZadajAdresu=Frame(self.OknoZadavanie,bd=4,bg="lightblue") >> > >> > self.RamecZadajAdresu.grid(row=3,column=0,columnspan=4,sticky=W+E+N+S) >> > >> > >> self.LabelPreDruhePole=Label(self.RamecZadajAdresu,bg="lightblue",text="Zadajte >> adresu dotyčného: ") >> > self.LabelPreDruhePole.grid(row=3,column=0,sticky=W+E+N+S) >> > self.VarPPA=StringVar() >> > >> > >> self.PolePreAdresu=Entry(self.RamecZadajAdresu,bg="lightyellow",textvariable=self.VarPPA,font="Arial >> 8") >> > self.PolePreAdresu.grid(row=3,column=1,columnspan=3) >> > # Vytvorený rámec pre zadanie adresy, popis pre neho, >> > premennú pre neho a taktiež pole >> > # samé. >> > >> > >> self.ZadavacieTlacitkoUkoncit=Button(self.OknoZadavanie,bg="lightblue",activebackground="lightgreen",command=self.OknoZadavanie.destroy,text="Zavrieť >> toto okno") >> > >> > >> self.ZadavacieTlacitkoUkoncit.grid(row=4,column=0,columnspan=4,sticky=W+E+N+S) >> > self.OverovaciToken=0 >> > # Vytvorené tlačítko pre zavretie tohto okna pre zadanie >> > adresy. >> > def enter(BoloStlacene): >> > BoloStlacene.widget.configure(state=DISABLED) >> > self.udajMeno=str(self.PolePreVstupMena.get()) >> > self.OverovaciToken+=1 >> > if self.OverovaciToken==2: >> > self.PolePreVstupMena.configure(state=NORMAL) >> > self.PolePreAdresu.configure(state=NORMAL) >> > self.zoznamMena.append(self.udajMeno) >> > self.VarPZM.set("") >> > self.VarPPA.set("") >> > >> > self.adresy.append([self.udajMeno,self.udajAdresu]) >> > self.OverovaciToken=0 >> > # funkcia, čo sa má stať po zdarnom zadaní informácie do >> > políčka Meno. Dané políčko >> > # sa disabluje, údaj z neho sa uloží. + špecialita >> > overovací token. Ak dosiahne hodnotu 2, >> > # program zistí, že má spravit ďalšiu "obrátku" pri >> > pridávaní do zoznamu >> > def entri(StlaceneBolo): >> > StlaceneBolo.widget.configure(state=DISABLED) >> > self.udajAdresu=str(self.PolePreAdresu.get()) >> > self.OverovaciToken+=1 >> > if self.OverovaciToken==2: >> > self.PolePreVstupMena.configure(state=NORMAL) >> > self.PolePreAdresu.configure(state=NORMAL) >> > self.zoznamMena.append(self.udajMeno) >> > self.VarPZM.set("") >> > self.VarPPA.set("") >> > >> > self.adresy.append([self.udajMeno,self.udajAdresu]) >> > self.OverovaciToken=0 >> > # táto funkcia zase slúži na definovanie činnosti políčka >> > Adresy. Zapíše údaj >> > # do zoznamu a disabluje políčko. Malo by to zabezpečiť >> > zadávanie. >> > self.PolePreVstupMena.bind("<Return>",enter) >> > self.PolePreAdresu.bind("<Return>",entri) >> > # čo sa má stať po stlačení Entrov v rôznych okienkach >> > >> > def nacitanie_dat(): >> > "Táto funkcia by mala zabezpečiť zobrazenie, resp. >> > načítanie dát zo zoznamu." >> > self.OknoNacitanie=Toplevel() >> > self.OknoNacitanie.title("Načítanie dát") >> > # vytvorené vlastné okno pre načítanie dát, kde by sa >> > teoreticky mali zobrazovať >> > # dáta uložené v zozname adries >> > >> > >> self.oknoNacitanieZobrazenie=Label(self.OknoNacitanie,bg="lightblue",text="") >> > self.oknoNacitanieZobrazenie.grid(row=0,column=0) >> > self.premenna="""\tMená\t\tAdresy >> > \n***************************************\n""" >> > if len(self.adresy)==0: >> > self.oknoNacitanieZobrazenie.configure(text="Zoznam je >> > prázdny.") >> > else: >> > for p in self.adresy: >> > self.coNacitaj="\t{0}\t\t{1}\n".format(p[0],p[1]) >> > self.premenna+=self.coNacitaj >> > >> > self.oknoNacitanieZobrazenie.configure(text=self.premenna) >> > # toto by malo zabezpečiť zdarné zobrazovanie položiek >> > zoznamu >> > >> > >> > >> self.tlacitkoUkoncitON=Button(self.OknoNacitanie,bg="lightblue",activebackground="lightgreen",text="Zavrieť >> toto okno",command=self.OknoNacitanie.destroy) >> > self.tlacitkoUkoncitON.grid(row=1,column=0,sticky=N+S+E+W) >> > # toto tvorí tlačítko, ktoré by mohlo zavrieť okno >> > >> > def ulozenie_do_suboru(): >> > "Toto má na starosti zdarné uloženie dát do súboru. Trošku >> > nám pomôže predošlá funkcia, načítanie dát." >> > self.OknoUlozenie=Toplevel() >> > self.OknoUlozenie.title("Uloženie do súboru") >> > >> > self.OknoUlozenieLabelVyber=Label(self.OknoUlozenie,text="Vyberte meno >> > súboru, do ktorého chcete uložiť dáta zo súboru.",bg="lightblue") >> > >> > self.OknoUlozenieLabelVyber.grid(row=0,column=0,columnspan=2,sticky=W >> > +E+N+S) >> > # vytvorené ukladacie okno, nastavený popisok pre neho + >> > popisok pre políčko pre zadanie mena ukladacieho súboru >> > self.OUPPV=StringVar() >> > >> > self.OUPolePreVstup=Entry(self.OknoUlozenie,bg="lightyellow",font="Arial >> 8",textvariable=self.OUPPV) >> > >> > self.OUPolePreVstup.grid(row=0,column=2,columnspan=2,sticky=W+E+N+S) >> > # pole, kam môžeme zadávať samotný názov súboru >> > >> > self.OUPosudzovaciaHlaska=Label(self.OknoUlozenie,bg="lightblue",text="") >> > >> > self.OUPosudzovaciaHlaska.grid(row=1,column=0,columnspan=4,sticky=W+E >> > +N+S) >> > # tu sa vypíš prípadná chybová hláška, v závislosti od >> > toho, čo zadáme do zmieneného políčka >> > def entricek(ppv): >> > self.result=str(self.OUPolePreVstup.get()) >> > if len(self.result)==0: >> > self.OUPosudzovaciaHlaska.configure(text="Nezadali >> > ste meno žiadneho súboru.") >> > self.OUPPV.set("") >> > return >> > # ak ste nezadali nič, tak vypíše hlášku, znuluje >> > hodnotu pola a zavrie funkciu >> > if len(self.adresy)==0: >> > self.OUPosudzovaciaHlaska.configure(text="Zoznam >> > adries je prázdny.") >> > self.OUPPV.set("") >> > return >> > # podobné ako v predchádzajúcom prípade, ibaže ak je >> > zoznam adries prázdny >> > self.subor=open(self.result,"wt") >> > try: >> > self.subor.write(self.premenna) >> > except: >> > self.OUPosudzovaciaHlaska.configure(text="Zatial >> > ste nenačítali žiadne dáta. Urobte tak cez hlavné menu.") >> > self.subor.close() >> > self.OUPPV.set("") >> > return >> > # stale je možnost že uživatel nenačítal >> > požadované dáta na vloženie >> > self.OUPosudzovaciaHlaska.configure(text="Zatial ste >> > nenačítali žiadne dáta. Urobte tak cez hlavné menu.") >> > self.subor.close() >> > self.OUPolePreVstup.configure(state=DISABLED) >> > # toto sa stane v pripade že chyba nenastala, >> > self.OknoUlozenie.bind("<Return>",entricek) >> > >> > >> self.OUTlacitkoZavri=Button(self.OknoUlozenie,bg="lightblue",activebackground="lightgreen",text="Zavrieť >> toto okno",command=self.OknoUlozenie.destroy) >> > >> > self.OUTlacitkoZavri.grid(row=2,column=0,columnspan=4,sticky=W+E+N+S) >> > # urobené tlačítko, ktoré zavrie okno >> > >> > def odstranenie_poloziek(): >> > "Odstránenie jedného záznamu zo zoznamu adries a mien" >> > self.OknoOdstranenie=Toplevel() >> > self.OknoOdstranenie.title("Odstranenie poloziek") >> > self.OOpripravenytext=[] >> > # vytvorené okno odstránenia, nastavený popisok + >> > náradíčko = prázdny zoznam >> > for x in self.zoznamMena: >> > self.OOpripravenytext.append(x) >> > >> > >> self.OOodstranenieLabel=Label(self.OknoOdstranenie,bg="lightblue",text="Vyberte >> si položku zoznamu,ktorú\nchcete odstrániť:") >> > self.OOodstranenieLabel.grid(row=0,column=0) >> > # pripraví zoznam položiek pre neskoršie odstranovanie + >> > vytvorenie labelu na odstranenie >> > # položky >> > self.OOPPO=StringVar() >> > >> > >> self.OOPolePreOdstranenie=Entry(self.OknoOdstranenie,bg="lightyellow",textvariable=self.OOPPO,font="Arial >> 8") >> > >> > self.OOPolePreOdstranenie.grid(row=0,column=1,columnspan=2,sticky=W+E >> > +S+N) >> > >> > >> self.OOLabelChybovaHlaska=Label(self.OknoOdstranenie,bg="lightblue",text="") >> > >> > self.OOLabelChybovaHlaska.grid(row=1,column=0,columnspan=3,sticky=W+E >> > +S+N) >> > # samotné políčko, kam možete zadat meno položky (meno >> > konk.osoby, ktorú chcete odstrániť >> > def stlacil_entri(gangnam): >> > coBoloStlacenee=str(self.OOPolePreOdstranenie.get()) >> > if coBoloStlacenee in self.zoznamMena: >> > >> > indexCoBoloStlacenee=self.zoznamMena.index(coBoloStlacenee) >> > else: >> > >> > self.OOLabelChybovaHlaska.configure(text="Neexistujúce meno.") >> > self.OOPPO.set("") >> > del self.adresy[indexCoBoloStlacenee] >> > del >> > self.zoznamMena[self.zoznamMena.index(coBoloStlacenee)] >> > self.OOPPO.set("") >> > # zoberieme to z políčka pre vstup, ak je v zozname >> > mien, odstrán z oboch zoznamov >> > # ak nie, vyhod chybove hlasky. Samozrejmostou je >> > nasledne premazanie policka >> > self.OOPolePreOdstranenie.bind("<Return>",stlacil_entri) >> > >> > >> self.OOZavriOkno=Button(self.OknoOdstranenie,bg="lightblue",activebackground="lightgreen",text="Zavrieť >> toto okno",command=self.OknoOdstranenie.destroy) >> > self.OOZavriOkno.grid(row=2,column=0,columnspan=3,sticky=W >> > +E+S+N) >> > # zabezpečená akcia pre pole pre vstup po stlačení Enteru. >> > # vytvorené tlačítko na zavretie okna >> > >> > >> > self.HOtlacitkoNacitat.configure(command=nacitanie_dat) >> > self.HOtlacitkoUlozit.configure(command=ulozenie_do_suboru) >> > >> > self.HOtlacitkoZadavatAdresy.configure(command=zadavanie_adries) >> > >> > self.HOtlacitkoOdstranitAdresy.configure(command=odstranenie_poloziek) >> > >> > self.hlavneOkno.mainloop() >> > >> > ######################################################### >> > >> > inst=Zaznamnik() >> > inst.program() >> > >> > Ďakujem za akúkolvek odpoved >> > >> > >> > _______________________________________________ >> > Python mailing list >> > Python@py.cz >> > http://www.py.cz/mailman/listinfo/python >> >> >> _______________________________________________ >> Python mailing list >> Python@py.cz >> http://www.py.cz/mailman/listinfo/python >> > > >---------- > >_______________________________________________ >Python mailing list >Python@py.cz >http://www.py.cz/mailman/listinfo/python > _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python