Dann nimm mal diese GUI. Es handelt sich um eine Tabelle. Diese soll eine Stadardtabellenform darstellen. Der Inhalt, bestehend aus Label und Entry, kann von der Anzahl der Zeilen variieren.
Der Sinn ist, die Standardform an verschiedenen Stellen der GUI einzfügen und dynamisch die Zeilen zu erzeugen. Ich denke da an Dictionaries für die Labels und davon abhängig die Zeilen zu erstellen.
Code: Alles auswählen
# -*- coding: utf-8 -*-
try:
import tkinter as tk
except ImportError:
import Tkinter as tk
#import DynTkInter as tk # for GuiDesigner
# === 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.title('APP')
self.geometry('1263x75+76+111')
self.minsize(116, 1)
self.maxsize(1444, 882)
# individual grid definition ===========================
self.rowconfigure(0,minsize=25, pad=0, weight=0)
self.columnconfigure(0,minsize=75, pad=0, weight=1)
# widget definitions ===================================
self.MAINFRAME = MainFrame(self,name='#0_MAINFRAME')
self.MAINFRAME.grid(row=0, sticky='nesw')
class MainFrame(tk.Frame):
def __init__(self,master,**kwargs):
tk.Frame.__init__(self,master,**kwargs)
self.myclass = 'MainFrame'
# general grid definition ==============================
grid_general_rows(self,2, minsize = 25, pad = 0, weight = 0)
grid_general_cols(self,1, minsize = 0, pad = 0, weight = 1)
# individual grid definition ===========================
self.columnconfigure(0,minsize=75, pad=0, weight=1)
# widget definitions ===================================
self.TitleFrame = Titleframe(self,name='#1_TitleFrame')
self.TitleFrame.grid(row=0, sticky='ew')
self.ContentFrame = ContentFrame(self,name='#2_ContentFrame')
self.ContentFrame.grid(row=1, sticky='ew')
class ContentFrame(tk.Frame):
def __init__(self,master,**kwargs):
tk.Frame.__init__(self,master,**kwargs)
self.myclass = 'ContentFrame'
# general grid definition ==============================
grid_general_cols(self,3, minsize = 0, pad = 0, weight = 1)
# individual grid definition ===========================
self.rowconfigure(0,minsize=25, pad=0, weight=0)
self.columnconfigure(0,minsize=0, pad=0, weight=0)
self.columnconfigure(1,minsize=0, pad=0, weight=0)
self.columnconfigure(2,minsize=0, pad=100, weight=20)
# widget definitions ===================================
self.Bezeichnung = tk.Label(self,name='#3_Bezeichnung',anchor='w', justify='left', text='label', width=50)
self.Bezeichnung.grid(row=0, sticky='nsw')
self.entry = tk.Entry(self,name='#4_entry')
self.entry.grid(column=2, row=0, sticky='nesw')
class Titleframe(tk.Frame):
def __init__(self,master,**kwargs):
tk.Frame.__init__(self,master,**kwargs)
self.myclass = 'Titleframe'
# individual grid definition ===========================
self.rowconfigure(0,minsize=25, pad=0, weight=0)
self.columnconfigure(0,minsize=75, pad=0, weight=1)
# widget definitions ===================================
self.label = tk.Label(self,name='#5_label',anchor='w', fg='#0000FF', text='label', width=25)
self.label.grid(row=0, sticky='nesw')
if __name__ == '__main__':
#Application().mainloop('guidesigner/Guidesigner.py') # for GuiDesigner
Application().mainloop()