ignoring the frame work I started on the main branch. This one seems to be a better starting point. I have it scaling the verticle size to the fit the window now. Working on resizing the window to fit the image. Also need to work on resizing width to maintain aspect ratio
This commit is contained in:
54
main.py
54
main.py
@@ -27,55 +27,31 @@ class MangaReader:
|
|||||||
self.menu.add_cascade(label="File", menu=item)
|
self.menu.add_cascade(label="File", menu=item)
|
||||||
root.config(menu=self.menu)
|
root.config(menu=self.menu)
|
||||||
|
|
||||||
# Frames
|
|
||||||
self.buttonFrame = Frame(master)
|
self.buttonFrame = Frame(master)
|
||||||
self.mangaFrame = Frame(master, bg="green")
|
|
||||||
self.titleFrame = Frame(master)
|
|
||||||
|
|
||||||
# forward/back buttons
|
# forward/back buttons
|
||||||
self.nextPg = Button(self.buttonFrame, text='>')
|
self.nextPg = Button(self.buttonFrame, text='>')
|
||||||
self.nextPg.bind('<Button-1>', self.nextPage)
|
self.nextPg.bind('<Button-1>', self.nextPage)
|
||||||
self.nextPg.grid(row=0, column=2)
|
self.nextPg.grid(row=0, column=2)
|
||||||
self.buttonFrame.grid_rowconfigure(0, weight=1)
|
self.buttonFrame.pack(side=BOTTOM)
|
||||||
self.buttonFrame.grid_columnconfigure(2,weight=1)
|
|
||||||
self.buttonFrame.grid(row=2, column=0, columnspan=2)
|
|
||||||
self.master.grid_rowconfigure(2, weight=1)
|
|
||||||
self.master.grid_columnconfigure(0,weight=1)
|
|
||||||
# self.buttonFrame.pack(side=BOTTOM)
|
|
||||||
self.backPg = Button(self.buttonFrame, text='<')
|
self.backPg = Button(self.buttonFrame, text='<')
|
||||||
self.backPg.bind('<Button-1>', self.backPage)
|
self.backPg.bind('<Button-1>', self.backPage)
|
||||||
self.backPg.grid(row=0, column=0)
|
self.backPg.grid(row=0, column=0)
|
||||||
self.buttonFrame.grid_rowconfigure(0, weight=1)
|
|
||||||
self.buttonFrame.grid_columnconfigure(0,weight=1)
|
|
||||||
|
|
||||||
# page counter
|
# page counter
|
||||||
self.pgcount = Label(self.buttonFrame, text= str(self.page) + " of " + str(self.total))
|
self.pgcount = Label(self.buttonFrame, text= str(self.page) + " of " + str(self.total))
|
||||||
self.pgcount.grid(row=1, columns=1, columnspan=2)
|
self.pgcount.grid(row=1, columns=1, columnspan=2)
|
||||||
self.buttonFrame.grid_rowconfigure(1, weight=1)
|
|
||||||
self.buttonFrame.grid_columnconfigure(1,weight=1)
|
|
||||||
|
|
||||||
# title frame
|
self.mangaTitle = Label(self.buttonFrame, text=self.file)
|
||||||
|
self.mangaTitle.grid(row=0, column=1)
|
||||||
self.titleFrame.grid(row=0, column=0, sticky="EW")
|
|
||||||
self.master.grid_rowconfigure(0, weight=1)
|
|
||||||
self.master.grid_columnconfigure(0,weight=1)
|
|
||||||
self.mangaTitle = Label(self.titleFrame, text=self.file)
|
|
||||||
self.mangaTitle.grid(row=0, sticky="EW")
|
|
||||||
self.titleFrame.grid_rowconfigure(0,weight=1)
|
|
||||||
self.titleFrame.grid_columnconfigure(0,weight=1)
|
|
||||||
|
|
||||||
# display image
|
# display image
|
||||||
self.mangaFrame.grid(row=1, column=0, sticky="NESW")
|
self.panel = Label(self.master, image=self.img)
|
||||||
self.master.grid_rowconfigure(1, weight=1)
|
self.panel.pack()
|
||||||
self.master.grid_columnconfigure(0,weight=1)
|
|
||||||
self.panel = Label(self.mangaFrame, image=self.img)
|
|
||||||
self.panel.grid(row=0, column=0, sticky="NESW")
|
|
||||||
self.panel.grid_rowconfigure(0, weight=1)
|
|
||||||
self.panel.grid_columnconfigure(0, weight=1)
|
|
||||||
|
|
||||||
def open_menu(self):
|
def open_menu(self):
|
||||||
# file dialog. reset page counts, call display Manga passing in starting values
|
# file dialog. reset page counts, call display Maanga passing in starting values
|
||||||
mangaFile = filedialog.askopenfilename()
|
mangaFile = filedialog.askopenfilename(initialdir = "/home/dan/Desktop/")
|
||||||
self.file = mangaFile
|
self.file = mangaFile
|
||||||
self.page = 0
|
self.page = 0
|
||||||
self.total = 0
|
self.total = 0
|
||||||
@@ -83,9 +59,10 @@ class MangaReader:
|
|||||||
self.displayManga(self.file, 0)
|
self.displayManga(self.file, 0)
|
||||||
|
|
||||||
def displayManga(self, file, pg):
|
def displayManga(self, file, pg):
|
||||||
basewidth = 500
|
#basewidth = 500
|
||||||
|
hsize = self.master.winfo_height() - self.buttonFrame.winfo_height() - self.menu.winfo_height()
|
||||||
|
wsize = 500
|
||||||
|
|
||||||
basewidth = self.mangaFrame.winfo_width()
|
|
||||||
with zf(file, 'r') as zip:
|
with zf(file, 'r') as zip:
|
||||||
# grab all the manga pages from the cbz file and sort them to put them in the correct order
|
# grab all the manga pages from the cbz file and sort them to put them in the correct order
|
||||||
fl = zip.namelist()
|
fl = zip.namelist()
|
||||||
@@ -95,17 +72,19 @@ class MangaReader:
|
|||||||
data = zip.read(fl[pg])
|
data = zip.read(fl[pg])
|
||||||
im = Image.open(io.BytesIO(data))
|
im = Image.open(io.BytesIO(data))
|
||||||
|
|
||||||
# I found the below code to maintain image ratios at https://stackoverflow.com/questions/273946/how-do-i-resize-an-image-using-pil-and-maintain-its-aspect-ratio
|
# wpercent = (basewidth / float(im.size[0]))
|
||||||
wpercent = (basewidth / float(im.size[0]))
|
# hsize = int((float(im.size[1]) * float(wpercent)))
|
||||||
hsize = int((float(im.size[1]) * float(wpercent)))
|
|
||||||
|
|
||||||
im = im.resize((basewidth, hsize), Image.ANTIALIAS)
|
|
||||||
|
im = im.resize((wsize, hsize), Image.ANTIALIAS)
|
||||||
#convert to tkImage and update the on screen image.
|
#convert to tkImage and update the on screen image.
|
||||||
self.img = ImageTk.PhotoImage(im)
|
self.img = ImageTk.PhotoImage(im)
|
||||||
self.panel.config(image=self.img)
|
self.panel.config(image=self.img)
|
||||||
#finally update the current page count
|
#finally update the current page count
|
||||||
self.pgcount.configure(text=str(pg+1) + " of " + str(self.total))
|
self.pgcount.configure(text=str(pg+1) + " of " + str(self.total))
|
||||||
|
|
||||||
|
self.master.config(width=wsize)
|
||||||
|
|
||||||
def nextPage(self, event):
|
def nextPage(self, event):
|
||||||
self.page = self.page + 1
|
self.page = self.page + 1
|
||||||
if self.page < self.total:
|
if self.page < self.total:
|
||||||
@@ -128,6 +107,7 @@ class MangaReader:
|
|||||||
print(self.page)
|
print(self.page)
|
||||||
print("FUCCK YOU")
|
print("FUCCK YOU")
|
||||||
|
|
||||||
|
|
||||||
#initalize tk
|
#initalize tk
|
||||||
root=Tk()
|
root=Tk()
|
||||||
app = MangaReader(root)
|
app = MangaReader(root)
|
||||||
|
|||||||
Reference in New Issue
Block a user