gibt es eine Möglichkeit, dass man einen Frame derart vorkonfiguriert, dass er ueber den gesamten
Zeitraum die gleiche Grösse behält?
Die Idee ist eigentlich, dass man fuer bestimmte Optionen einen Leerraum läßt, der sich erst später füllt.
Zur Zeit mache ich mächtige Verrenkungen mit dummy-Labels als Platzhalter, aber das kann es eigentlich nicht sein, oder?
Im Quelltext sind die Platzhalter die beiden dummy_label_0x um den frame fuer das Advanced Menu: frame_advanced
ungefaehr auf die Groesse zu bringen.
Was ich eigentlich bräuchte wäre quasi:
1) Zeige alle Optionmenus beim Start
2) Berechne dir eine definierte Framegroesse
3) loesche die Optionmenues, aber lass den Frame genauso gross, wie er vorher war,
Der Grund ist, dass sich sonst auch andere Widgets im Original-tool komplett verschieben, wenn der Frame andauernd
die Groesse aendert.
Hat da jemand einen Trick oder eine Idee?
Thanx
Code: Alles auswählen
#!/usr/bin/env python
import Tkinter as tk
import string, re, os, sys, subprocess, datetime
class AppFunctions(tk.LabelFrame):
def __init__(self, master):
self.extend_flag = 0
tk.LabelFrame.__init__(self, master)
# definition
self.option_01_list = ["01_01","01_02","01_03"]
self.option_01_var = tk.StringVar(self)
self.option_01_var.set(self.option_01_list[0])
self.option_01 = tk.OptionMenu(self,self.option_01_var, *self.option_01_list)
frame_advanced = tk.Frame(self)
button_advanced = tk.Button(frame_advanced, command=self.extend_or_reduce_menu)
self.dummy_label_01 = tk.Label(frame_advanced)
self.dummy_label_02 = tk.Label(frame_advanced)
self.option_04_list = ["04_01","04_02"]
self.option_04_var = tk.StringVar(self)
self.option_04_var.set(self.option_04_list[0])
self.option_04 = tk.OptionMenu(frame_advanced,self.option_04_var, *self.option_04_list)
self.option_05_list = ["05_01","05_02"]
self.option_05_var = tk.StringVar(self)
self.option_05_var.set(self.option_05_list[0])
self.option_05 = tk.OptionMenu(frame_advanced,self.option_05_var, *self.option_05_list)
# position
self.option_01.grid( row=0, column=0,pady=4)
frame_advanced.grid( row=2, column=0, columnspan=2)
button_advanced.grid(row=0, column=0)
self.dummy_label_01.grid(row=1, column=0, pady=5)
self.dummy_label_02.grid(row=2, column=0, pady=5)
self.grid( row=0, column=0, padx=2, pady=2, sticky="N"+"S"+"E"+"W")
# configuration
self.configure(text="submitting",bg="#888888",relief="ridge",borderwidth=2)
self.option_01.configure(width=30,bg="#888888",justify= "left")
frame_advanced.configure(bg="#888888",relief="ridge",borderwidth=2)
button_advanced.configure(bg="#666666",text=" Advanced ... ")
self.dummy_label_01.configure(text=" ", bg="#888888")
self.dummy_label_02.configure(text=" ", bg="#888888")
self.option_04.configure(width=15,bg="#888888",justify= "left")
self.option_05.configure(width=15,bg="#888888",justify= "left")
def extend_or_reduce_menu(self):
changed_flag = 0
if (self.extend_flag == 0):
print self.extend_flag
self.option_04.grid(row=1, column=0)
self.option_05.grid(row=2, column=0)
self.extend_flag = 1
changed_flag = 1
if ( (self.extend_flag == 1) and (changed_flag == 0) ):
print self.extend_flag
self.option_04.grid_remove()
self.option_05.grid_remove()
self.extend_flag = 0
if __name__ == "__main__":
root = tk.Tk()
root.geometry("400x300")
root.config(background="#888888")
root.option_add('*font',("courier",8,"bold"))
root.title("submitting")
display = AppFunctions(root)
root.mainloop()