From 525cb4c3782397642abb90d5fd14ee0500c6cb9b Mon Sep 17 00:00:00 2001 From: nbilbo Date: Fri, 5 Aug 2022 20:58:34 -0300 Subject: [PATCH] using treeview instead listbox --- .gitignore | 182 +++++++++++++++++++++++++++++++++++++++++ src/main.py => main.py | 6 +- pictures/MVCTKVIEW.png | Bin 19500 -> 64636 bytes pictures/add.png | Bin 0 -> 388 bytes pictures/credits.txt | 4 + pictures/delete.png | Bin 0 -> 603 bytes pictures/update.png | Bin 0 -> 1274 bytes src/Constants.py | 11 +++ src/Controller.py | 17 ++-- src/Model.py | 7 +- src/View.py | 128 +++++++++++++++++++++-------- src/books.db | Bin 12288 -> 12288 bytes 12 files changed, 309 insertions(+), 46 deletions(-) create mode 100644 .gitignore rename src/main.py => main.py (73%) create mode 100644 pictures/add.png create mode 100644 pictures/credits.txt create mode 100644 pictures/delete.png create mode 100644 pictures/update.png create mode 100644 src/Constants.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1f78dd3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,182 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + + +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +*~ +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + diff --git a/src/main.py b/main.py similarity index 73% rename from src/main.py rename to main.py index ab911bd..4045e4b 100644 --- a/src/main.py +++ b/main.py @@ -1,8 +1,8 @@ from tkinter import * -import Controller -import Model -import View +from src import Controller +from src import Model +from src import View if __name__ == '__main__': root = Tk() diff --git a/pictures/MVCTKVIEW.png b/pictures/MVCTKVIEW.png index c02b065e89f6770f2065ad719a525666357085c1..e3b409b20a0141c8b1741340924ee487a3c9e4b1 100644 GIT binary patch literal 64636 zcmcF~byQSQ+wagyBQbO-A&r0_AfS{YHImW{($Wkeosyy=-QC^Y3=PWA4Bg#Bb4T&L zvDW?TyWibw9XM;|oc-**pZYy9!ODuVc-WNK0002*?Hj500025B0Dv0#0QnaX!hlVT z{P)oI%?Aen0KfCkg%ZV%PXz$b1Kvu#QgzYWfjhgCj7?)5%nw+<-tgDsX8Z<7L(F|o zXPqq70hPcfd_SYioK6!pOp@-a{VHI@_C;6D4EFYB)y?;Ie2dEPt$Zp85wYSQ8OhgB zk)QydpBQ#uOI#P_YY=${POjjq01*B6j40PY%2dX#Wd*4}V#iag?;9%!mN7)@OB`0ZrOpY@<=^58n*p356bkHK!_ugT44-qIZ)S?)hu*dfMjC%eqxXd ziN>LxPK3&nK8rGK*l90(B~fnK;V&IVHvFtIZ~O@d>uOs_1e;t`1S3S`B}>pP=Qp z`Xm|R_~FEIfTg%}IzKQpz{5HKJ{R0BDq~oEzhbrsY!wNhiFOY56?p)>`OVMqrAnUR z0-l*m;vG-F!5ZS?oBJI^{j??RY};d*bkD)Am~a22{X|at*N513l~^k^MZ_vU!2_-u zo{(+3zoc31Nj2=K29|{eA@S={hG%NARvr13B;NyEX#=Lz$;`xkx=~DDyymI9KZEb| zvEZq<)~SgS%Zj8X;sI07IpiemD7PFQKt$qNJkF`mu*Lr!ecMA-DWJ*he5^{^-ecHq zdwOQ*gfgx8Ppgl&)iqQVp=h_z*F<|a_solWzR2Z&vpZ}(z=eNK=fL=LS8|G(L$3S* z-fEfTluYT&a~(S`-znx;oxi7=Ud|fJC={#HW}RT$mGr=PM!EWFAs>m0EkN>{GR**>6dV6#op66IsPfqAA`puvQ=XuMBT>1mNGhV+zteu)) zT}j=Jj;{5w3pTh9MDKT@s)x?zeG|Uj?Z```n>%38aEx;E z+(LdA?J`zw5On1&hB*n9B>m5>NY!g`v>I+Umyl0vZ`i|Pr?F1TBz)n_lh@x!P3
    Nty$qgV%W98m9T|ks#t2og$nF~;b}3LZxZ_S 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 y-FRx_=~?Gy={x0RUvDUowd4_boZM# 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 diff --git a/pictures/add.png b/pictures/add.png new file mode 100644 index 0000000000000000000000000000000000000000..1fee5e116a035509289ab48d0c946ae7266e83ba GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmSQK*5Dp-y;YjHK@;M7UB8!3a zK@etqWMI1s$dD{?jVKAuPb(=;EJ|f4FE7{2%*!rLPAo{(%P&fw{mw>;fq{|H)5S3) zqV?@`M=xea5tsY#&&9>eRMuEzG*5xuLqSf#Tq56CT!4RpVE;lzr4IKCOW9xOiSu!s z)LAAyx$xpvonP1MyZK$EC1=^5@e}={TW~QdJ3mV2`RVOfbfz;ecp$wX>$z-!xJ<1dj%^@VYu?t@_~V3%AyDPGW(}mwX8are}M7z!fD)L%K1@8UP#S6ck{jAK84krt!k>w z|1Google plus icons created by Pixel perfect - Flaticon +Cross icons created by Pixelmeetup - Flaticon +Update icons created by Freepik - Flaticon + diff --git a/pictures/delete.png b/pictures/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..44578d0b9b643a8fbab14247e04e62615c6aff8b GIT binary patch literal 603 zcmV-h0;K(kP)m?wO zGVxU}m1+i_J;?WmGsI^f|n^_<93$ zFE%mv%!C&XEVD9R?H1qWIGg9gJTFEA3QI~AeOita zs@hPAzXy^8c#1^m317BlxJen$>3O`f@3Z`k;MxIqr&sSx$dm`_FAde!`sLN;oe7h@ z3xa(Iyzs(z62HfEN$dw;JvO|D#5zcv0;+jgq`)f@b#Wx|A!KD-Nlbw|;3u+sVTWVg pjJFa?i6dn9zz^U~Vw#n4^$Vxl3Ij^)f~Wuh002ovPDHLkV1j8J0w@3g literal 0 HcmV?d00001 diff --git a/pictures/update.png b/pictures/update.png new file mode 100644 index 0000000000000000000000000000000000000000..fc984ecb3dc0433a73f8f40b2bd6267227079681 GIT binary patch literal 1274 zcmV`E1x$?X_Ky&akSGbp>Y^w}8hj8Q3cK5a0X4N!BtZ>g;)5o}L?iguLTIREEwtTI z_kU++jt^3p9d@>K%bT93x#v6Qd|%GYxpOb@UpJaR<7jB~MPk8<^Mx@C!MhBtUy0#Dfb*+;Vq| zr}Fb%_ezz;9_PIBl9wFCuG2)eLt^V!7j*P0V{mfT;x6z-~0cLnj zc}Y#9mN}E}9DFu@Il3(sNz^{^=D@L>0-ifKS_I(XEI~wp8)U8{aWYg2z&ujz?Gk#@n zH=1r&%f2g={4rn1m6(_~rKMHHj4?A}Q;|IlJN`IlR5srfcWGZcsf7v{oHSpoo{yV<>knGaoAGQh1p zt)3Hwk~jK>lxQ?@jE!F(0LfuLWL#exLn4MP(n7$uOxV`lQgL7|sU?%*(qO?6-Q5>de^Hr%7YWBbV0{|VnsZjRi)c^nh07*qoM6N<$f`l7f_W%F@ literal 0 HcmV?d00001 diff --git a/src/Constants.py b/src/Constants.py new file mode 100644 index 0000000..123689a --- /dev/null +++ b/src/Constants.py @@ -0,0 +1,11 @@ +import os + + +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +SRC_DIR = os.path.join(BASE_DIR, 'src') +PICTURES_DIR = os.path.join(BASE_DIR, 'pictures') +DATABASE_NAME = os.path.join(SRC_DIR, 'books.db') +ADD_PICTURE = os.path.join(PICTURES_DIR, 'add.png') +UPDATE_PICTURE = os.path.join(PICTURES_DIR, 'update.png') +DELETE_PICTURE = os.path.join(PICTURES_DIR, 'delete.png') + diff --git a/src/Controller.py b/src/Controller.py index defd0b3..bbb4f76 100644 --- a/src/Controller.py +++ b/src/Controller.py @@ -1,5 +1,3 @@ -from tkinter import * - class Controller: def __init__(self, model, view): self.model = model @@ -7,7 +5,7 @@ def __init__(self, model, view): self.view.buttonAdd["command"] = self.addDataToLbx self.view.buttonUpdate["command"] = self.updateDataFromLBX self.view.buttonRemove["command"] = self.removeDataFromLBX - self.view.listbox.bind('<>', self.loadLbxDataToEntry) + self.view.treeview.bind('<>', self.loadDataToEntry) self.loadDataToLBX() def loadDataToLBX(self): @@ -26,12 +24,13 @@ def updateDataFromLBX(self): self.updateDB() self.loadDataToLBX() - def loadLbxDataToEntry(self, event=None): - title = self.view.getCursorTitle() - author = self.view.getCursorAuthor() + def loadDataToEntry(self, event=None): + title = self.view.getCursorTitle() or '' + author = self.view.getCursorAuthor() or '' + id_ = self.view.getCursorID() or '' self.view.setTitle(title) self.view.setAuthor(author) - print("ID: ", self.view.getCursorID(), "\nTITLE: ", title, "\nAUTHOR: ", author) + print("ID: ", id_, "\nTITLE: ", title, "\nAUTHOR: ", author) def addToDB(self): title = self.view.getTitleData() @@ -46,4 +45,6 @@ def updateDB(self): def removeDataFromDB(self): id = self.view.getCursorID() - self.model.deleteDataFromTable(id) + if id: + self.model.deleteDataFromTable(id) + diff --git a/src/Model.py b/src/Model.py index 001f78f..4079024 100644 --- a/src/Model.py +++ b/src/Model.py @@ -1,8 +1,9 @@ import sqlite3 +from src import Constants class Model: def __init__(self): - self.con = sqlite3.connect('books.db') + self.con = sqlite3.connect(Constants.DATABASE_NAME) self.cur = self.con.cursor() def addToTable(self, title, author): @@ -11,7 +12,6 @@ def addToTable(self, title, author): print(self.cur.fetchall()) self.con.commit() - def updateTable(self, id, title, author): self.values = (str(title), str(author), int(id)) self.cur.execute("UPDATE Books SET title = ?, author= ? WHERE id = ?", self.values) @@ -30,4 +30,5 @@ def getAllData(self): result = self.cur.fetchall() print(result) self.con.commit() - return result \ No newline at end of file + return result + diff --git a/src/View.py b/src/View.py index 0e3a0ef..f92adf4 100644 --- a/src/View.py +++ b/src/View.py @@ -1,36 +1,84 @@ -from tkinter import * +import tkinter as tk +import tkinter.ttk as ttk +from src import Constants + + class View: def __init__(self, root): self.root = root self.root.title("Library Database") + self.root.geometry('900x500+0+0') self.createWidgets() def createWidgets(self): - self.labelTitle = Label(self.root, text="Title: ") + self.root.columnconfigure(0, weight=1) + self.root.columnconfigure(1, weight=1) + self.root.columnconfigure(2, weight=1) + self.root.rowconfigure(3, weight=1) + + self.labelTitle = ttk.Label(self.root, text="Title: ") self.labelTitle.grid(row=0, column=0, padx=5, pady=5) - self.entryTitleTextVar = StringVar() - self.entryTitle = Entry(self.root, textvariable=self.entryTitleTextVar) - self.entryTitle.grid(row=0, column=1, padx=5, pady=5) + self.entryTitleTextVar = tk.StringVar() + self.entryTitle = ttk.Entry(self.root) + self.entryTitle.configure(textvariable=self.entryTitleTextVar) + self.entryTitle.configure(font='Geogia 16 normal') + self.entryTitle.grid(row=0, column=1, columnspan=2, padx=5, pady=5, sticky='ew') - self.labelAuthor = Label(self.root, text="Author: ") + self.labelAuthor = ttk.Label(self.root, text="Author: ") self.labelAuthor.grid(row=1, column=0, padx=5, pady=5) - self.entryAuthorTextVar = StringVar() - self.entryAuthor = Entry(self.root, textvariable=self.entryAuthorTextVar) - self.entryAuthor.grid(row=1, column=1, padx=5, pady=5) - - self.buttonAdd = Button(self.root, text="Add") - self.buttonAdd.grid(row=2, column=0, pady=5) - - self.buttonUpdate = Button(self.root, text="Update") - self.buttonUpdate.grid(row=2, column=1, pady=5) - - self.buttonRemove = Button(self.root, text="Remove") - self.buttonRemove.grid(row=2, column=2, pady=5) - - self.listbox = Listbox(self.root, width=60) - self.listbox.grid(row=3, column=1, padx=5, pady=5) + self.entryAuthorTextVar = tk.StringVar() + self.entryAuthor = ttk.Entry(self.root) + self.entryAuthor.configure(textvariable=self.entryAuthorTextVar) + self.entryAuthor.configure(font='Geogia 16 normal') + self.entryAuthor.grid(row=1, column=1, columnspan=2, padx=5, pady=5, sticky='ew') + + self.addPicure = tk.PhotoImage(file=Constants.ADD_PICTURE) + self.buttonAdd = ttk.Button(self.root) + self.buttonAdd.configure(text="Add") + self.buttonAdd.configure(image=self.addPicure) + self.buttonAdd.configure(compound='left') + self.buttonAdd.grid(row=2, column=0, pady=5, sticky='ew') + + self.updatePicture = tk.PhotoImage(file=Constants.UPDATE_PICTURE) + self.buttonUpdate = ttk.Button(self.root) + self.buttonUpdate.configure(text="Update") + self.buttonUpdate.configure(image=self.updatePicture) + self.buttonUpdate.configure(compound='left') + self.buttonUpdate.grid(row=2, column=1, padx=5, pady=5, sticky='ew') + + self.deletePicture = tk.PhotoImage(file=Constants.DELETE_PICTURE) + self.buttonRemove = ttk.Button(self.root) + self.buttonRemove.configure(text="Remove") + self.buttonRemove.configure(image=self.deletePicture) + self.buttonRemove.configure(compound='left') + self.buttonRemove.grid(row=2, column=2, pady=5, sticky='ew') + + # treeview stuffs + self.treeview = ttk.Treeview(self.root) + self.treeview.configure(show='headings') + self.treeview.configure(columns=('id', 'title', 'author')) + self.treeview.heading('id', text='Id') + self.treeview.heading('title', text='Title') + self.treeview.heading('author', text='Author') + self.treeview.column('id', width=70, minwidth=70, stretch=False) + self.treeview.column('title', minwidth=70) + self.treeview.column('author', minwidth=70) + self.treeview.grid(row=3, column=0, columnspan=3, sticky='nsew') + + self.scrollbar = ttk.Scrollbar(self.root) + self.scrollbar.grid(row=3, column=3, sticky='ns') + + self.scrollbar.configure(command=self.treeview.yview) + self.treeview.configure(yscrollcommand=self.scrollbar.set) + + # style + style = ttk.Style() + style.theme_use('clam') + style.configure('.', font='Georgia 16 normal') + style.configure('Treeview', rowheight=40) + style.configure('Treeview.Heading', font='Georgia 16 normal') def getTitleData(self): return self.entryTitleTextVar.get() @@ -44,22 +92,38 @@ def setTitle(self, title): def setAuthor(self, author): self.entryAuthorTextVar.set(author) + def getTreeviewSelection(self): + selections = self.treeview.selection() + if selections: + selection = selections[0] + values = self.treeview.item(selection)['values'] + return values + + return None + def getCursorID(self, event=None): - selectedLbData = self.listbox.curselection() - id = self.listbox.get(selectedLbData)[0] - return id + selectedData = self.getTreeviewSelection() + if selectedData: + return selectedData[0] + + return None def getCursorTitle(self): - selectedLbData = self.listbox.curselection() - title = self.listbox.get(selectedLbData)[1] - return title + selectedData = self.getTreeviewSelection() + if selectedData: + return selectedData[1] + + return None def getCursorAuthor(self): - selectedLbData = self.listbox.curselection() - author = self.listbox.get(selectedLbData)[2] - return author + selectedData = self.getTreeviewSelection() + if selectedData: + return selectedData[2] + + return None def setListbox(self, data): - self.listbox.delete(0, END) + self.treeview.delete(*self.treeview.get_children()) for values in data: - self.listbox.insert(END, values) + self.treeview.insert('', 'end', values=(values)) + diff --git a/src/books.db b/src/books.db index 36b402af07dd2124536da7a1af62265f3f47fe99..1a4b784c348361ae39aea5d1d7744f9ab6662fc3 100644 GIT binary patch delta 60 zcmZojXh@hK&1f=F##zvWK`&mCmw|zSiQk!l-