From 7fa199db644cd6d9707365ff742b82ce4a5a8cf7 Mon Sep 17 00:00:00 2001 From: weberni69795 Date: Wed, 20 Oct 2021 15:21:48 +0200 Subject: [PATCH] UI --- Masterarbeit/UIViewTKinter.py | 100 ++++++++++++++++++++++++++++----- Masterarbeit/UIViewTKinter.pyc | Bin 1931 -> 4879 bytes Masterarbeit/test.py | 87 ++++++++++++++++++++++++---- 3 files changed, 162 insertions(+), 25 deletions(-) diff --git a/Masterarbeit/UIViewTKinter.py b/Masterarbeit/UIViewTKinter.py index 2ddac10..80428dd 100644 --- a/Masterarbeit/UIViewTKinter.py +++ b/Masterarbeit/UIViewTKinter.py @@ -11,26 +11,96 @@ class View(Tk): self.controller = c self.title("Taktiles Spelling") #self.resizable(height=False, width= False) - self.geometry('{}x{}'.format(460,350)) + self.geometry('500x400') #self.configure(bg="blue") - topFrame = Frame(self, bg="white", height=10, width=450) #, padx=460, pady=10) - l = Label(topFrame, text="Titel") - b = Button(topFrame, text="test") - - topFrame.pack() - l.grid(row=0, column=0) - b.grid(row=0, column=1) - - - testBtn = Button(self, text="test", command=lambda: self.controller.actionPerformed("test")) - testBtn.pack() - - stopBtn = Button(self, text="stop", command=lambda: self.controller.actionPerformed("stop")) - stopBtn.pack() + self.createTopFrame() + self.createMainFrame() + self.createBottomFrame() self.protocol("WM_DELETE_WINDOW", self.onClosing) + + + def createTopFrame(self): + self.topFrame = Frame(self, bg="blue", height=50, width=500) #, padx=460, pady=10) + l = Label(self.topFrame, text="taktilles Buchstabieren") + self.topFrame.grid(column=0, row=0) + self.topFrame.grid_propagate(0) + self.topFrame.pack_propagate(0) + l.pack() + + def createMainFrame(self): + + self.mainFrame = Frame(self, bg="red", height=250, width=500) + self.mainFrame.grid(column=0, row=1) + self.mainFrame.pack_propagate(0) + + container = Frame(self.mainFrame, bg="cyan", height=250, width=500) + container.pack(side="top", fill="both", expand = True) + container.pack_propagate(0) + container.grid_propagate(0) + + self.frames = {} + for F in (StartPage, WorkingPage): + page_name = F.__name__ + frame = F(parent=container, controller=self) + self.frames[page_name] = frame + + # put all of the pages in the same location; + # the one on the top of the stacking order + # will be the one that is visible. + frame.grid(row=0, column=0, sticky="nsew") + + self.changeFrame("StartPage") + + def changeFrame(self, pageName): + frame = self.frames[pageName] + frame.tkraise() + + #testBtn = Button(self.mainFrame, text="test", command=lambda: self.controller.actionPerformed("test"), height=6, width = 10) + #testBtn.grid(row=0, column=0) + + #stopBtn = Button(self.mainFrame, text="stop", command=lambda: self.controller.actionPerformed("stop"), height=6, width = 10) + #stopBtn.grid(row=0, column=1) + + + def createBottomFrame(self): + self.bottomFrame = Frame(self, bg="green", height=250, width=500) + self.bottomFrame.grid(column=0, row=2) + self.bottomFrame.pack_propagate(0) + + label = Label(self.bottomFrame, text="Hier stehen Infos") + label.pack() + def onClosing(self): print("closing") self.destroy() + + + +class StartPage(Frame): + def __init__(self, parent, controller): + Frame.__init__(self, parent, height=250, width=500, bg="red") + self.grid_propagate(0) + self.pack_propagate(0) + self.controller = controller + label = Label(self, text="This is the start page") + label.pack(side="top", fill="x", pady=10) + + button1 = Button(self, text="Go to Page One", + command=lambda: controller.changeFrame("WorkingPage")) + button2 = Button(self, text="Go to Page Two", + command=lambda: controller.changeFrame("WorkingPage")) + button1.pack() + button2.pack() + +class WorkingPage(Frame): + def __init__(self, parent, controller): + Frame.__init__(self, parent) + self.controller = controller + label = Label(self, text="This is page 1") + label.pack(side="top", fill="x", pady=10) + button = Button(self, text="Go to the start page", + command=lambda: controller.changeFrame("StartPage")) + button.pack() diff --git a/Masterarbeit/UIViewTKinter.pyc b/Masterarbeit/UIViewTKinter.pyc index 0ec58b014dd1afd33b34ca440d68b327d1fd72ef..880a6d072c4f384495e9a335a910579dc7bb56ee 100644 GIT binary patch literal 4879 zcmd5=U2hx56}_|67iG&ZX#MM6FE+Bc@86w#1S70;DGuZJzoU`ZM|~`fJ*!zO?7uAt^;EkN{SIN}SQm>~QAJJ?EY~tJ*(TmjCwp zIPS^hXC8k)K&ehp9p8{dBr%eSwD+?CVw?zPPE@aAJ4Fbku#2>gKeT&XP)QR;e}aian{07Yq~&P&LW{lcbnY2 zRlSC~9S?n)xvH@{c3GC@eZPp&_ck_;ezLLQSJB>k*4cjY^hx_kXK$yq{d}*vj6u&M zw1<8Pe>$BsPkpE3`Jh+izAUoLm7XyB)Mrj-^<6P?zC89fIIDEAckN>QVHsoe=4|L$ zoaSMS#)WB{h4;lMjB>wmS@@z?WS;01`Bqj`uv^ch*i|muS15bhjmv)J>Gt6vn@zMt ztLmp{tq)+bY& zqXiY6B<8lMo0Vv#wrubl^~f3ehz4(=RHvu_F~9?i01u!fKoO(`Xr_koj-gwLE+&As zOBgq&N&$=z|GFg0l3ZhbCXphJ2UrFD2{F*el9N6Y0H{ z`vaf8OA~pl!!+@O^j|oG&hzfbSFiJ-l7(#9Jm?K7A9qt%!edJ6B0Cu6DQ1bUp(=~R zCaI(go`dJ7m~)?}ao1(KMZd(BWCj}@AUuxyV2BPuIffU8$XyOK>0Zn4DA?JR0ZUNd zK&j|3F%QgIbkD5fS3#xSGf?l*Mc)K!K=dUbS5O0r7w`kHgj!5kiRj}4l)uUlG9jRS zU6K_^pqn=(S*3%|q(-eEMZ!w#KzBk1n2=qIa`c5D6cIN2k!=6&nVf=ck-S`%QwRji zdyN|;w>TT-ozBS#KA__w_2_+ccm{9~iV{w8Tar7v`5*o+dz=ZQ*Yqe#xVvyw%icmA z7~v9o2c7iasO%bBq?jeMlsA@MPZ>GNiQaLXYokgNrz?OwI zHpek3X~{|LS3d0xkM(PvX975@UOha|!!sDnIr<$G^|&2Yg7w-pYwYMoS4M7X^aGTN2bAc60ku)zH!D!Dx~kZkS($G{nxq)W3^P@*H_;%-sEyp4 zkOwIVF`{tu0Id*}@1UuP#1G3jtz44}g+nuTc)%9UXWv8T%8vF3i&4@mf+aZ6*F|`Q z2Ui%cAv{8`UZ1KpLN6p_b;=5MoWuZu@0ZTy-zExF+!#Qbr9XzwHjs=4E^qAQ`$eVq zh`?L&3vn<_kr$Xtz?8lhq>@Htl-(<3OSr zZ+O&}vZXgk<@|~cB(B13;#hBIN}nsUnz%egnUH1PG)YXm!JT=KPG?jk2N?ob6TM}u zT0XF(ndPA^*ElywTd#Ph;K6B!rk({;zge%>->6@!FR9M-@I-$&Z4*Vg;c&+U1*aEM z+%fsM$B3g&(Qvk_f1m>QCwEMI1D{LRkO*l6Gc;38FBHfrxJx2CeHqfo91{*^F$>^E zi5m)%M@`dBxSL$aPRvWdaWZ?A8RjogPHcQj{){AJm}Jf;Af3!6+?h_mW=K4fi|zch zrLn~n()ypl#GGRvph{81Y8RF)CH!BbEGdoE)b_ zz2ZINqoU!91{J>XJa>Vy#b|`YGed@4CeJH!10H*+l!yCvH3nOD9piz{Kt(?fQqX_|yL z51@N_5JMtl=|N5X_Gf4*L|vWp=tBG5OKyKPkE@xx*sbFAMa&PGO7Svq%iND{qGnk( zAp=rg?9W+Ihl3etTm|r|5Eg4yKkqjkGYw8u4ZmP5pG1w(cNF&UHvbj CETRGc literal 1931 zcmb_cO^*{t5UrjWdu@Xk*oBP%2@&ODffS!3A%ymW#0ofQ)?|}CFd9$y+HH?#tm(GQ z3j5>;a>|d&nO~FqfaFz=Z9;C*X0=tWuIjF?di8qzKbwt@f8=pO>%R(qpFzwksLNfF zL{d;n)H}=WQ=kNm8&o_dA;dc5Q7;qp(|YAoPkN*Rx)3CN`h{pk^z(UzWI(4a&aVH$ zUrWHUtRC3_`bVwi+Zxz?2r>7d6wx_S5vMx$xEMBk3Qt=e!U?N7qz1VGG0$+^5{(4? zO0@83;nQz|#KNs3kG&(G^Q_?IML?){gbLveXyv(pt@1_*ZWRG~Pr>!r5WY^q+ z?!{xPQ)M2WPF0%fY+!hZ@0M@hE%ir0t=}--Jca(ia%eu(RslYuq0)n))eV?sL`yr= zzw`cped?`s{vHmbYnQRsN36)_8b9RnBzZcUWE$tl?m#8^WD;j`%NM?UA7XAoaYy(E zW!!{ImUP1!LXI$&%SrOg7I~Vg!ZK&##OgeIrHYHZm?+tTi%N!aokpb>&Sk#Asy)mn zs-5Y%Y9HsxY@#x2+J{G-!A!Sb#>T25F8WH__UjIly7#@#;QM-diK!4hN#jXh#!v6V z21%jZ4K|97+U2eEm+f=#OKmj>hT)LSu(s4Qd=S2)ZQ|Cq82N9S$hcjz2 zBL-(0Cu3&}3h;+PoEEvwK?=+7KF^NQ+<=!YUb)`gcO`LW;$mQ2!tvahd>mkxS2Cee zx4G|lWtFjqHgmSYF4+G<^@@Pr#)Vv^c?d;fU(`j@yX!v?cg3FA^BUqn9Qa>~hR2d{ zc^f%`ZJ6U=^|#+G9LHA(OMa}(|8Ds*)=+GpibP9Ae(A{ki5IS`EB3;~_=>CI8Ih=n z78`34WSD3axu+IIlU&YHEJJQTS64|@)bDj$Od$tIZ|t6*y#_~T zGR+HnQWVhq8L{gaKcUy1qwOalWSm3J`oGrcpm|b)@szV0{u23OS2V@0*YN%Zk8+56 diff --git a/Masterarbeit/test.py b/Masterarbeit/test.py index 77661f2..3a1ed69 100644 --- a/Masterarbeit/test.py +++ b/Masterarbeit/test.py @@ -1,17 +1,84 @@ -try: - from Tkinter import * +try: + import tkinter as tk # python 3 + from tkinter import font as tkfont # python 3 except ImportError: - from tkinter import * + import Tkinter as tk # python 2 + import tkFont as tkfont # python 2 -def myClick(string): - myLabel = Label(root, text=string) - myLabel.pack() +class SampleApp(tk.Tk): -root = Tk() -myButton = Button(root, text="Click me", command=lambda: myClick("test"), bg="blue") + def __init__(self, *args, **kwargs): + tk.Tk.__init__(self, *args, **kwargs) + + self.title_font = tkfont.Font(family='Helvetica', size=18, weight="bold", slant="italic") + + # the container is where we'll stack a bunch of frames + # on top of each other, then the one we want visible + # will be raised above the others + container = tk.Frame(self) + container.pack(side="top", fill="both", expand=True) + container.grid_rowconfigure(0, weight=1) + container.grid_columnconfigure(0, weight=1) + + self.frames = {} + for F in (StartPage, PageOne, PageTwo): + page_name = F.__name__ + frame = F(parent=container, controller=self) + self.frames[page_name] = frame + + # put all of the pages in the same location; + # the one on the top of the stacking order + # will be the one that is visible. + frame.grid(row=0, column=0, sticky="nsew") + + self.show_frame("StartPage") + + def show_frame(self, page_name): + '''Show a frame for the given page name''' + frame = self.frames[page_name] + frame.tkraise() +class StartPage(tk.Frame): -myButton.pack() + def __init__(self, parent, controller): + tk.Frame.__init__(self, parent) + self.controller = controller + label = tk.Label(self, text="This is the start page", font=controller.title_font) + label.pack(side="top", fill="x", pady=10) -root.mainloop() + button1 = tk.Button(self, text="Go to Page One", + command=lambda: controller.show_frame("PageOne")) + button2 = tk.Button(self, text="Go to Page Two", + command=lambda: controller.show_frame("PageTwo")) + button1.pack() + button2.pack() + + +class PageOne(tk.Frame): + + def __init__(self, parent, controller): + tk.Frame.__init__(self, parent) + self.controller = controller + label = tk.Label(self, text="This is page 1", font=controller.title_font) + label.pack(side="top", fill="x", pady=10) + button = tk.Button(self, text="Go to the start page", + command=lambda: controller.show_frame("StartPage")) + button.pack() + + +class PageTwo(tk.Frame): + + def __init__(self, parent, controller): + tk.Frame.__init__(self, parent) + self.controller = controller + label = tk.Label(self, text="This is page 2", font=controller.title_font) + label.pack(side="top", fill="x", pady=10) + button = tk.Button(self, text="Go to the start page", + command=lambda: controller.show_frame("StartPage")) + button.pack() + + +if __name__ == "__main__": + app = SampleApp() + app.mainloop() \ No newline at end of file