#!/usr/bin/env python3 # coding: utf-8 powitanie = ''' Prosty edytor plików tekstowych Demonstracja użycia biblioteki TkInter do tworzenia aplikacji GUI. Program zbudowano dla celów poglądowych. Nie jest on kompletny; użytkowanie grozi utratą danych. ''' from Tkinter import * import tkFileDialog, tkMessageBox def makieta(): tkMessageBox.showwarning('Info', 'Do zrobienia...') class Application(Tk): zmienione = False def nowyPlik(self): if self.zmienione: self.zapiszPlikJako() self.tb.delete(1.0, END) self.fn = None self.sb.config(text = 'Nowy bufor') def otworzPlik(self): if self.zmienione: self.zapiszPlikJako() dlg = tkFileDialog.Open(initialfile = self.fn) f = dlg.show() if len(f): self.tb.delete(1.0, END) self.tb.insert(END, open(f).read()) self.fn = f self.sb.config(text = 'Wczytano ' + self.fn) def zapiszPlikJako(self): dlg = tkFileDialog.SaveAs(initialfile = self.fn) f = dlg.show() if len(f): self.fn = f self.zapiszPlik() def zapiszPlik(self): if (self.fn): plik = open(self.fn, 'w') plik.write(self.tb.get(1.0, END).encode('utf-8')) plik.close() self.sb.config(text = 'Zapisano ' + self.fn) else: self.zapiszPlikJako() def about(self): tkMessageBox.showinfo('Info', 'Szkielet aplikacji GUI\nutworzony przy użyciu biblioteki TkInter') def __init__(self, title): Tk.__init__(self) self.title(title) menubar = Menu(self) # create a pulldown menu, and add it to the menu bar mm = Menu(menubar, tearoff=0) mm.add_command(label="Nowy", command=self.nowyPlik) mm.add_command(label="Otwórz", command=self.otworzPlik) mm.add_command(label="Zapisz", command=self.zapiszPlik) mm.add_command(label="Zapisz jako", command=self.zapiszPlikJako) mm.add_separator() mm.add_command(label="Drukuj", command=makieta) mm.add_separator() mm.add_command(label="Zakończ", command=self.quit) menubar.add_cascade(label="Plik", menu=mm) # create more pulldown menus mm = Menu(menubar, tearoff=0) mm.add_command(label="Znajdź", command=makieta) menubar.add_cascade(label="Edycja", menu=mm) mm = Menu(menubar, tearoff=0) mm.add_command(label="About", command=self.about) menubar.add_cascade(label="Pomoc", menu=mm) # display the menu self.config(menu=menubar) # status bar self.sb = Label(self, relief = SUNKEN, anchor = W) self.sb.pack(expand = 0, fill = X, side = BOTTOM) self.tb = Text(self) self.tb.pack(expand=1, fill = BOTH) self.tb.insert(END, powitanie) self.fn = None self.sb.config(text = 'Gotowe') w = Application('aplikacja TkInter') w.geometry('500x300+100+100') w.mainloop()