Nach Korrektur dieses Codes:
testcode.py
Code: Alles auswählen
from communication import eventbroker, publish, subscribe
class InputCode:
def __init__(self,container):
self.container = container
subscribe('AUSGABE_EIN','LIFT_EINGABE')
subscribe('LIFT_EINGABE',self.lift_eingabe)
def lift_eingabe(self,ausgabe_ein):
if not ausgabe_ein:
self.container.lift()
class OutputCode:
def __init__(self,container):
self.container = container
subscribe('AUSGABE_EIN','LIFT_AUSGABE')
subscribe('LIFT_AUSGABE',self.lift_ausgabe)
def lift_ausgabe(self,ausgabe_ein):
if ausgabe_ein:
self.container.lift()
def ToolbarCode(self):
self.schalter1.connect(eventbroker,'AUSGABE_EIN',False)
wurden dann bei diesem Anfangsbeispiel:
viewtopic.php?f=18&t=40677
mit dem GuiDesigner die Text Felder herausgelöscht und stattdessen Frames hineingesetzt und für diese die entsprechenden Eintragungen gemacht. Das ist dann das Resultat:
Code: Alles auswählen
# -*- coding: utf-8 -*-
try:
import tkinter as tk
except ImportError:
import Tkinter as tk
#import DynTkInter as tk # for GuiDesigner
#============= imports baseclass ===================
import AppOutput
import AppToolbar
import AppInput
# === general grid table definition =================
def grid_general_rows(container,rows,**kwargs):
for row in range(rows):
container.rowconfigure(row,**kwargs)
def grid_general_cols(container,columns,**kwargs):
for column in range(columns):
container.columnconfigure(column,**kwargs)
# Application definition ============================
class Application(tk.Tk):
def __init__(self,**kwargs):
tk.Tk.__init__(self,**kwargs)
self.minsize(500, 400)
# widget definitions ===================================
self.frame_guinotes = GuiNotes(self,name='#0_frame_guinotes')
self.frame_menunotes = FrameMenunotes(self,name='#1_frame_menunotes')
self.frame_toolbarnotes = FrameToolbarnotes(self,name='#2_frame_toolbarnotes')
self.label_PS = tk.Label(self,name='#3_label_PS',bd='4', anchor='w', pady='4', fg='#a90000', relief='solid', font='TkFixedFont 10 bold', text='Welches Layout soll man nehmen?\nUnd soll man einen GuiBuilder nehmen?\nWenn ja, welchen?', padx='4', justify='left')
self.frame_menunotes.pack(fill='x')
self.frame_toolbarnotes.pack(fill='x')
self.frame_guinotes.pack(expand=1, fill='both')
self.label_PS.pack(fill='x', pady=3)
class GuiNotes(tk.Frame):
def __init__(self,master,**kwargs):
tk.Frame.__init__(self,master,**kwargs)
self.myclass = 'GuiNotes'
self.config(bg='#ceff00', highlightthickness=7, highlightbackground='#a90000', highlightcolor='#a90000')
# general grid definition ==============================
grid_general_rows(self,1, minsize = 100, pad = 0, weight = 1)
grid_general_cols(self,1, minsize = 100, pad = 0, weight = 1)
# widget definitions ===================================
self.InputContentGUI = Input(self,name='#4_InputContentGUI')
self.InputContentGUI.grid(row=0, sticky='nesw')
self.OutputGUI = Output(self,name='#5_OutputGUI')
self.OutputGUI.grid(row=0, sticky='nesw')
class Input(AppInput.InputGUI):
def __init__(self,master,**kwargs):
AppInput.InputGUI.__init__(self,master,**kwargs)
self.myclass = 'Input'
self.baseclass = 'AppInput.InputGUI'
class Output(AppOutput.OutputGUI):
def __init__(self,master,**kwargs):
AppOutput.OutputGUI.__init__(self,master,**kwargs)
self.myclass = 'Output'
self.baseclass = 'AppOutput.OutputGUI'
class FrameMenunotes(tk.Frame):
def __init__(self,master,**kwargs):
tk.Frame.__init__(self,master,**kwargs)
self.config(highlightbackground='blue', highlightthickness=7, highlightcolor='blue')
# widget definitions ===================================
self.notes_menu = tk.Text(self,name='#6_notes_menu',font='TkFixedFont 12 bold', pady=8, width=1, fg='blue', padx=8, height=1)
self.notes_menu.delete(1.0, tk.END)
self.notes_menu.insert(tk.END,'Oben soll ein Menü sein')
self.notes_menu.pack(expand=1, fill='both')
class FrameToolbarnotes(tk.Frame):
def __init__(self,master,**kwargs):
tk.Frame.__init__(self,master,**kwargs)
self.config(relief='sunken', highlightbackground='#008900', highlightthickness=7, highlightcolor='#008900')
# widget definitions ===================================
self.ToolbarGUI = Toolbar(self,name='#7_ToolbarGUI')
self.ToolbarGUI.pack(expand=1, fill='both')
class Toolbar(AppToolbar.Toolbar):
def __init__(self,master,**kwargs):
AppToolbar.Toolbar.__init__(self,master,**kwargs)
self.myclass = 'Toolbar'
self.baseclass = 'AppToolbar.Toolbar'
self.config(height=60)
if __name__ == '__main__':
#Application().mainloop('guidesigner/Guidesigner.py') # for GuiDesigner
Application().mainloop()
Lediglich eine kleine Nachpesserung war nötig. In AppToolbar.py war das Padding mittels y und height etwas zu hoch eingestellt, wodurch dann der LED Switch zu klein wurde.
Code: Alles auswählen
self.schalter1.place(relwidth='0.2', height='-10', x='10', y='5', relheight='1')
Hier war zuerst y = 10 und height = -20 und das war etwas zuviel. Wenn man einmal von meinem LED Switch absieht, war das bißchen in testcode.py der ganze zu schreibende Code.
Ist klar, dass man den ganzen generierten Code nicht händisch schreiben sollte, wenn man alles bequem und live erlebend mit dem GuiDesigner erledigen kann.