Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Course_work/5var (IV semester) .py
- import tkinter
- import tkinter.ttk as ttk
- import tkinter.filedialog
- class Monuments:
- def __init__(self, id, create, name, expenses):
- self.id = id
- self.create = create
- self.name = name
- self.expenses = expenses
- def setId(self, id):
- self.id = id
- def getId(self):
- return self.id
- def setCreate(self, create):
- self.create = create
- def getCreate(self):
- return self.create
- def setName(self, name):
- self.name = name
- def getName(self):
- return self.name
- def setExpenses(self, expenses):
- self.expenses = expenses
- def getExpenses(self):
- return self.expenses
- def Center(toplevel):
- toplevel.update_idletasks()
- w = toplevel.winfo_screenwidth()
- h = toplevel.winfo_screenheight()
- size = tuple(int(_) for _ in toplevel.geometry().split('+')[0].split('x'))
- x = w / 2 - size[0] / 2
- y = h / 2 - size[1] / 2
- toplevel.geometry("%dx%d+%d+%d" % (size + (x, y)))
- def OnOpen():
- ftypes = [('Python files', '*.txt'), ('All files', '*')]
- dlg = tkinter.filedialog.Open(filetypes=ftypes)
- f1 = dlg.show()
- if f1 != '':
- print(f1)
- ReadFileText(f1)
- def OnSave():
- file = open(path, 'w')
- result = ''
- for i in range(0, len(arrayMonuments)):
- if (i < len(arrayMonuments) - 1):
- result += str(arrayMonuments[i].getCreate()) + '\t' + str(arrayMonuments[i].getName()) + '\t'+ str(arrayMonuments[i].getExpenses()) + '\n'
- else:
- result += str(arrayMonuments[i].getCreate()) + '\t' + str(arrayMonuments[i].getName()) + '\t'+ str(arrayMonuments[i].getExpenses())
- print(arrayMonuments[i].getExpenses())
- file.write(result)
- file.close()
- def ReadFileText(arg):
- global path, screen, root, arrayMonuments
- path = arg
- file = open(path, 'rt')
- inputFile = []
- arrayMonuments = []
- for line in file:
- row = [i for i in line.split('\t')]
- inputFile.append(row)
- countId = 0
- for line in inputFile:
- countId += 1
- arrayMonuments.append(Monuments(countId, int(line[0]), line[1], int(line[2].replace("\n", ""))))
- for i in range(0, len(arrayMonuments)):
- print(arrayMonuments[i].getCreate())
- if (screen == 0):
- screen = TableScreen(root)
- screen.pack(side="top", fill="both", expand=True)
- screen.LoadTable(arrayMonuments)
- file.close()
- def AddCD():
- addWindow = tkinter.Tk()
- addWindow.geometry('225x250')
- addWindow.title("Add")
- Center(addWindow)
- global createEntryBox, nameEntryBox, expensesEntryBox
- createLabel = tkinter.Label(addWindow, text='Enter a year create')
- createLabel.pack(side=tkinter.TOP)
- createEntryBox = tkinter.Entry(addWindow)
- createEntryBox.focus_set()
- createEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- # 2
- nameLabel = tkinter.Label(addWindow, text='Enter a name')
- nameLabel.pack(side=tkinter.TOP)
- nameEntryBox = tkinter.Entry(addWindow)
- nameEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- # 3
- countexpensesLabel = tkinter.Label(addWindow, text='Enter a coin')
- countexpensesLabel.pack(side=tkinter.TOP)
- expensesEntryBox = tkinter.Entry(addWindow)
- expensesEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- mySubmitButton = tkinter.Button(addWindow, text='Add', height=1, width=16, command=AddItem)
- mySubmitButton.pack()
- def AddItem():
- print(createEntryBox.get())
- print(nameEntryBox.get())
- print(expensesEntryBox.get())
- arrayMonuments.append(
- Monuments(len(arrayMonuments) + 1, int(createEntryBox.get()), nameEntryBox.get(),
- int(expensesEntryBox.get())))
- screen.LoadTable(arrayMonuments)
- def InsertBefore():
- insertWindow = tkinter.Tk()
- insertWindow.geometry('225x290')
- insertWindow.title("Insert")
- Center(insertWindow)
- global indexEntryBox, CreateEntryBox, NameEntryBox, ExpensesEntryBox
- indexLabel = tkinter.Label(insertWindow, text='Insert before index [1-' + str(len(arrayMonuments)) + ']')
- indexLabel.pack(side=tkinter.TOP)
- indexEntryBox = tkinter.Entry(insertWindow)
- indexEntryBox.focus_set()
- indexEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- CreateLabel = tkinter.Label(insertWindow, text='Enter a Create')
- CreateLabel.pack(side=tkinter.TOP)
- CreateEntryBox = tkinter.Entry(insertWindow)
- CreateEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- NameLabel = tkinter.Label(insertWindow, text='Enter a Name')
- NameLabel.pack(side=tkinter.TOP)
- NameEntryBox = tkinter.Entry(insertWindow)
- NameEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- countExpensesLabel = tkinter.Label(insertWindow, text='Enter a Expensess')
- countExpensesLabel.pack(side=tkinter.TOP)
- ExpensesEntryBox = tkinter.Entry(insertWindow)
- ExpensesEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- mySubmitButton = tkinter.Button(insertWindow, text='Insert before', height=1, width=16, command=InsertItemBefore)
- mySubmitButton.pack()
- def InsertItemBefore():
- print(indexEntryBox.get())
- print(CreateEntryBox.get())
- print(NameEntryBox.get())
- print(ExpensesEntryBox.get())
- if (0 <= int(indexEntryBox.get()) - 1 < len(arrayMonuments)):
- arrayMonuments.insert(int(indexEntryBox.get()) - 1,
- Monuments(int(indexEntryBox.get()), int(CreateEntryBox.get()), NameEntryBox.get(),
- ExpensesEntryBox.get()))
- for i in range(len(arrayMonuments)):
- arrayMonuments[i].setId(i + 1)
- screen.LoadTable(arrayMonuments)
- else:
- print('Invalid index')
- def InsertAfter():
- insertWindow = tkinter.Tk()
- insertWindow.geometry('225x290')
- insertWindow.title("Insert")
- Center(insertWindow)
- global indexEntryBox, CreateEntryBox, NameEntryBox, ExpensesEntryBox
- indexLabel = tkinter.Label(insertWindow, text='Insert after index [1-' + str(len(arrayMonuments)) + ']')
- indexLabel.pack(side=tkinter.TOP)
- indexEntryBox = tkinter.Entry(insertWindow)
- indexEntryBox.focus_set()
- indexEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- CreateLabel = tkinter.Label(insertWindow, text='Enter a Create')
- CreateLabel.pack(side=tkinter.TOP)
- CreateEntryBox = tkinter.Entry(insertWindow)
- CreateEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- NameLabel = tkinter.Label(insertWindow, text='Enter a Name')
- NameLabel.pack(side=tkinter.TOP)
- NameEntryBox = tkinter.Entry(insertWindow)
- NameEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- countExpensesLabel = tkinter.Label(insertWindow, text='Enter a Expensess')
- countExpensesLabel.pack(side=tkinter.TOP)
- ExpensesEntryBox = tkinter.Entry(insertWindow)
- ExpensesEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- mySubmitButton = tkinter.Button(insertWindow, text='Insert after', height=1, width=16, command=InsertItemAfter)
- mySubmitButton.pack()
- def InsertItemAfter():
- print(indexEntryBox.get())
- print(CreateEntryBox.get())
- print(NameEntryBox.get())
- print(ExpensesEntryBox.get())
- if (0 <= int(indexEntryBox.get())-1 < len(arrayMonuments)):
- arrayMonuments.insert(int(indexEntryBox.get()),
- Monuments(int(indexEntryBox.get()), int(CreateEntryBox.get()), NameEntryBox.get(),
- ExpensesEntryBox.get()))
- for i in range(len(arrayMonuments)):
- arrayMonuments[i].setId(i + 1)
- screen.LoadTable(arrayMonuments)
- else:
- print('Invalid index')
- def Replace():
- insertWindow = tkinter.Tk()
- insertWindow.geometry('225x290')
- insertWindow.title("Insert")
- Center(insertWindow)
- global indexEntryBox, CreateEntryBox, NameEntryBox, ExpensesEntryBox
- indexLabel = tkinter.Label(insertWindow, text='Replace index [1-' + str(len(arrayMonuments)) + ']')
- indexLabel.pack(side=tkinter.TOP)
- indexEntryBox = tkinter.Entry(insertWindow)
- indexEntryBox.focus_set()
- indexEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- CreateLabel = tkinter.Label(insertWindow, text='Enter a Create')
- CreateLabel.pack(side=tkinter.TOP)
- CreateEntryBox = tkinter.Entry(insertWindow)
- CreateEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- NameLabel = tkinter.Label(insertWindow, text='Enter a Name')
- NameLabel.pack(side=tkinter.TOP)
- NameEntryBox = tkinter.Entry(insertWindow)
- NameEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- countExpensesLabel = tkinter.Label(insertWindow, text='Enter a Expensess')
- countExpensesLabel.pack(side=tkinter.TOP)
- ExpensesEntryBox = tkinter.Entry(insertWindow)
- ExpensesEntryBox.pack(side=tkinter.TOP, pady=10, padx=10)
- mySubmitButton = tkinter.Button(insertWindow, text='Replace', height=1, width=16, command=ReplaceItem)
- mySubmitButton.pack()
- def ReplaceItem():
- print(indexEntryBox.get())
- print(CreateEntryBox.get())
- print(NameEntryBox.get())
- print(ExpensesEntryBox.get())
- if (0 <= int(indexEntryBox.get())-1 < len(arrayMonuments)):
- array = []
- for i in range(len(arrayMonuments)):
- if i != int(indexEntryBox.get())-1:
- arrayMonuments[i] = arrayMonuments[i]
- else:
- arrayMonuments[i] = Monuments(int(indexEntryBox.get()), int(CreateEntryBox.get()), NameEntryBox.get(),
- ExpensesEntryBox.get())
- for i in range(len(arrayMonuments)):
- arrayMonuments[i].setId(i + 1)
- screen.LoadTable(arrayMonuments)
- else:
- print('Invalid index')
- class TableScreen(tkinter.Frame):
- def __init__(self, parent):
- ttk.Frame.__init__(self, parent)
- if (tableIsCreated == 0):
- self.CreateUI()
- self.LoadTable(arrayMonuments)
- parent.grid_rowconfigure(0, weight=1)
- parent.grid_columnconfigure(0, weight=1)
- def CreateUI(self):
- tv = ttk.Treeview(self)
- tv['columns'] = ('Create', 'Name', 'Expenses')
- tv.heading("#0", text='Id')
- tv.column("#0", width=1)
- tv.heading('Create', text='Create')
- tv.column('Create', anchor='center', width=100)
- tv.heading('Name', text='Name')
- tv.column('Name', anchor='center', width=100)
- tv.heading('Expenses', text='Expenses')
- tv.column('Expenses', anchor='center', width=100)
- tv.grid(sticky=(tkinter.N, tkinter.S, tkinter.W, tkinter.E))
- self.treeview = tv
- self.grid_rowconfigure(0, weight=1)
- self.grid_columnconfigure(0, weight=1)
- global tableIsCreated
- tableIsCreated = 1
- def LoadTable(self, arr):
- for i in self.treeview.get_children():
- self.treeview.delete(i)
- for i in range(len(arr)):
- self.treeview.insert('', 'end', text=str(arr[i].getId()),
- values=(arr[i].getCreate(), arr[i].getName(), arr[i].getExpenses()))
- def main():
- global root, arrayMonuments, tableIsCreated, screen
- root = tkinter.Tk()
- root.geometry('750x500')
- root.title("Monuments")
- arrayMonuments = []
- tableIsCreated = 0
- screen = 0
- menubar = tkinter.Menu(root)
- filemenu = tkinter.Menu(menubar, tearoff=0)
- filemenu.add_command(label="Open", command=OnOpen)
- filemenu.add_command(label="Save", command=OnSave)
- filemenu.add_separator()
- filemenu.add_command(label="Exit", command=root.quit)
- editmenu = tkinter.Menu(menubar, tearoff=0)
- editmenu.add_command(label="Add", command=AddCD)
- editmenu.add_command(label="Insert before", command=InsertBefore)
- editmenu.add_command(label="Insert after", command=InsertAfter)
- editmenu.add_command(label="Replace", command=Replace)
- menubar.add_cascade(label="File", menu=filemenu)
- menubar.add_cascade(label="Edit", menu=editmenu)
- root.config(menu=menubar)
- Center(root)
- root.mainloop()
- if __name__ == "__main__":
- main()
Add Comment
Please, Sign In to add comment