Code: Alles auswählen
from tkinter import *
import FileHandler as FileHandler
import os
class Gui(object):
def __init__(self, root):
self.root = root
# set window to fullscreen
self.screenwidth = self.root.winfo_screenwidth()
self.screenheight = self.root.winfo_screenheight()
self.root.geometry("{0}x{1}+0+0".format(self.screenwidth, self.screenheight))
self.root.overrideredirect(True)
# backgroundcolor (is used in any widget)
self.color = "sea green"
# logical variables:
self.shown_post = 0
# variables (pleas change)
self.news_file = "news.txt"
self.url = "https://dl.dropboxusercontent.com/s/y6ys96go7jkj0zx/news_public.txt?token_hash=AAGaT5HXvVWvpN40skUMFn8dPdFE1yGCZfE9Ye6X6qykQw&dl=1"
# used images
self.header_image = PhotoImage(file="img\header.gif")
self.logo_image = PhotoImage(file="img\logo.gif")
self.close_image = PhotoImage(file="img\close.gif")
self.px = PhotoImage(file="img\pixel.gif")
self.l_arrow_image = PhotoImage(file="img\c_left_arrow.gif")
self.r_arrow_image = PhotoImage(file="img\c_right_arrow.gif")
self.uniwars_logo_image = PhotoImage(file="img\c_uniwars_logo.gif")
# padding of elements in Guis
self.padding = 2
# create frames
# --> l_sidebar_frame
self.l_sidebar_frame = Frame(self.root)
# --> post_frame
self.post_frame = Frame(self.root)
# create post structure
self.post_title_label = Label(self.post_frame, text="Title", bg=self.color, image=self.px, compound=LEFT, width=self.screenwidth-304, height=50, bd=1)
self.post_content_label =Label(self.post_frame, text="Text", bg="white", image=self.px, compound=LEFT, width=self.screenwidth-172-12, bd=1)
self.post_autor_label = Label(self.post_frame, text="Autor + Time", bg=self.color, image=self.px, compound=LEFT, width=self.screenwidth-172-12, bd=1)
# grid all frames
self.l_sidebar_frame.grid(row=1, column=0, sticky=NW)
self.post_frame.grid(row=1, column=1, columnspan=2, sticky=NW)
# fill header frame
# --> logo_label
self.logo_label = Label(self.root, image=self.logo_image, bg=self.color)
self.logo_label.grid(column=0, row=0, pady=self.padding, padx=self.padding)
# --> header_label
self.header_label = Label(self.root, image=self.header_image, bg=self.color)
self.header_label.grid(column=1, row=0, pady=self.padding, padx=self.padding, ipadx = (self.screenwidth-798-12)/2, sticky=NW)
# --> close_button
self.close_button = Button(self.root, image=self.close_image, bg=self.color, command=quit, relief="flat",bd=1)
self.close_button.grid(column=2, row=0, pady=self.padding, padx=self.padding, sticky=NW)
# create post
# --> l_arrow_bouuton
self.l_arrow_button = Button(self.post_frame, image=self.l_arrow_image, relief="flat", bd=1, bg=self.color, command=self.r_button)
self.l_arrow_button.grid(column=0, row=0, pady=self.padding, padx=self.padding)
self.r_arrow_button = Button(self.post_frame, image=self.r_arrow_image, relief="flat", bd=1, bg=self.color, command=self.l_button)
self.r_arrow_button.grid(column=2, row=0, pady=self.padding, padx=self.padding)
# --> grid post structure
self.post_title_label.grid(column=1, row=0, pady=self.padding, padx=self.padding)
self.post_content_label.grid(column=0, row=1, columnspan=3, pady=self.padding, padx=self.padding, ipady=20)
self.post_autor_label.grid(column=0, row=2, columnspan=3, pady=self.padding, padx=self.padding, ipady=10)
# fill labels with content(post)
FileHandler.download_file(self.url, self.news_file)
self.sync_posts(FileHandler.get_file(self.news_file))
# fillind l_sidebar with content
# --> download_label
dl_label = Label(self.l_sidebar_frame, text="-- Download's --", bg=self.color, image=self.px, compound=LEFT, width=168, height=50, bd=1)
dl_label.grid(column=0, row=0, pady=self.padding, padx=self.padding)
# --> l_sidebar (download links)
self.uniwars_dl_button = Button(self.l_sidebar_frame, image=self.uniwars_logo_image, relief="flat", bg=self.color, bd=1, command=self.open_sites)
self.uniwars_dl_button.grid(row=1, column=0, pady=self.padding, padx=self.padding)
mainloop()
def r_button(self):
if 0 < self.shown_post:
self.shown_post -= 1
self.sync_posts(FileHandler.get_file(self.news_file))
def l_button(self):
if len(FileHandler.get_file(self.news_file))-1 > self.shown_post:
self.shown_post += 1
self.sync_posts(FileHandler.get_file(self.news_file))
def sync_posts(self, shown_post):
posts = FileHandler.get_file(self.news_file)
self.post_title_label.config(text=posts[self.shown_post]["post_name"])
self.post_content_label.config(text=posts[self.shown_post]["post_content"])
self.post_autor_label.config(text="Geschrieben von: "+posts[self.shown_post]["post_autor"]+" am "+posts[self.shown_post]["post_date"])
def open_sites(self):
os.system("start http://www.amazon.de/")
root = Tk()
Gui(root)