Skip to content

Commit 9628c44

Browse files
Finalize radio framework
Added top level window usage from suggesstion of @bryan Oakley of stack overflow. Thank you for your help (pep 8 adherence is coming in a future version (most likely after the gui is finished.)
1 parent 23fe590 commit 9628c44

File tree

1 file changed

+45
-25
lines changed

1 file changed

+45
-25
lines changed

test.py

Lines changed: 45 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,33 @@ def __init__(self, height, width, window_title):
1616
self.root_window.title(window_title)
1717
self.root_window.minsize(width, height)
1818
self.root_window.geometry('%dx%d+%d+%d' % (w, h, x, y))
19-
self.master_dictionary = {"radio_ctrl": StringVar()}
19+
self.master_dictionary = {"radio_ctrl": StringVar(), "top_level_window": False}
20+
21+
def new_top_level(self, height, width, window_title):
22+
self.top_level_window = Toplevel()
23+
w = width
24+
h = height
25+
ws = self.top_level_window.winfo_screenwidth() # width of the screen
26+
hs = self.top_level_window.winfo_screenheight() # height of the screen
27+
x = (ws/2) - (w/2)
28+
y = (hs/2) - (h/2)
29+
self.top_level_window.title(window_title)
30+
self.top_level_window.minsize(width, height)
31+
self.top_level_window.geometry('%dx%d+%d+%d' % (w, h, x, y))
2032

2133
def new_button(self, button_text, button_command="", grid_row=0, grid_column=0, grid_sticky="NESW", grid_columnspan=1, grid_rowspan=1):
22-
self.button = ttk.Button(self.root_window, text=button_text, command=button_command)
34+
if self.master_dictionary["top_level_window"]:
35+
self.button = ttk.Button(self.top_level_window, text=button_text, command=button_command)
36+
elif not self.master_dictionary["top_level_window"]:
37+
self.button = ttk.Button(self.root_window, text=button_text, command=button_command)
2338
self.button.grid(row=grid_row, column=grid_column, sticky=grid_sticky, columnspan=grid_columnspan, rowspan=grid_rowspan)
2439
self.responsive_grid(grid_row, grid_column)
2540

2641
def new_label(self, label_text, text_alignment="center", grid_row=0, grid_column=0, grid_sticky="NESW", grid_columnspan=1, grid_rowspan=1):
27-
self.label = ttk.Label(self.root_window, text=label_text, anchor=text_alignment)
42+
if self.master_dictionary["top_level_window"]:
43+
self.label = ttk.Label(self.top_level_window, text=label_text, anchor=text_alignment)
44+
elif not self.master_dictionary["top_level_window"]:
45+
self.label = ttk.Label(self.root_window, text=label_text, anchor=text_alignment)
2846
self.label.grid(row=grid_row, column=grid_column, sticky=grid_sticky, columnspan=grid_columnspan, rowspan=grid_rowspan)
2947
self.responsive_grid(grid_row, grid_column)
3048

@@ -34,11 +52,18 @@ def new_progress_bar(self, pg_length=250, pg_mode="determinate", grid_row=0, gri
3452
self.responsive_grid(grid_row, grid_column)
3553

3654
def responsive_grid(self, row_responsive=0, column_responsive=0, row_weight_num=1, column_weight_num=1):
37-
self.root_window.grid_columnconfigure(column_responsive, weight=column_weight_num)
38-
self.root_window.grid_rowconfigure(row_responsive, weight=row_weight_num)
55+
if self.master_dictionary["top_level_window"]:
56+
self.top_level_window.grid_columnconfigure(column_responsive, weight=column_weight_num)
57+
self.top_level_window.grid_rowconfigure(row_responsive, weight=row_weight_num)
58+
elif not self.master_dictionary["top_level_window"]:
59+
self.root_window.grid_columnconfigure(column_responsive, weight=column_weight_num)
60+
self.root_window.grid_rowconfigure(row_responsive, weight=row_weight_num)
3961

4062
def new_radio_button(self, widget_text="Radio Button", radio_value="Radio Btn", radio_command="", grid_row=0, grid_column=0, grid_sticky="NESW", grid_columnspan=1, grid_rowspan=1):
41-
self.radio_button = ttk.Radiobutton(self.root_window, text=widget_text, variable=self.master_dictionary["radio_ctrl"], value=radio_value, command=radio_command)
63+
if self.master_dictionary["top_level_window"]:
64+
self.radio_button = ttk.Radiobutton(self.top_level_window, text=widget_text, variable=self.master_dictionary["radio_ctrl"], value=radio_value, command=radio_command)
65+
elif not self.master_dictionary["top_level_window"]:
66+
self.radio_button = ttk.Radiobutton(self.root_window, text=widget_text, variable=self.master_dictionary["radio_ctrl"], value=radio_value, command=radio_command)
4267
self.radio_button.grid(row=grid_row, column=grid_column, sticky=grid_sticky, columnspan=grid_columnspan, rowspan=grid_rowspan)
4368
self.responsive_grid(grid_row, grid_column)
4469

@@ -127,7 +152,7 @@ def toggle_var(self, var_name="some_var", custom_data=False, custom_data_enable=
127152
def save_radio_var(self):
128153
vars_system.init_vars[self.change_var_window_values["var_to_change"]] = self.master_dictionary["radio_ctrl"].get()
129154
messagebox.showinfo("debug", self.master_dictionary["radio_ctrl"].get())
130-
#self.root_window.destroy()
155+
self.top_level_window.destroy()
131156
#main_window.root_window.deiconify()
132157

133158

@@ -147,7 +172,7 @@ def create_change_var_window(self):
147172
self.new_radio_button(widget_text=radio_name, radio_value=value, grid_row=grid_placement)
148173
grid_placement +=1
149174
grid_placement -=1
150-
self.new_button("Cancle", self.root_window.destroy, grid_row=grid_placement, grid_column=1)
175+
self.new_button("Cancle", self.top_level_window.destroy, grid_row=grid_placement, grid_column=1)
151176
grid_placement -=1
152177
self.new_button("Save", self.save_radio_var, grid_row=grid_placement, grid_column=1)
153178
# Radio Requires:
@@ -158,7 +183,10 @@ def create_change_var_window(self):
158183
self.new_button("Cancel", self.root_window.destroy, grid_row=3, grid_column=1)
159184
# Free_form requires:
160185
# "var_to_change" and "is_number"
161-
self.root_window.mainloop()
186+
if self.master_dictionary["top_level_window"]:
187+
self.top_level_window.mainloop()
188+
elif not self.master_dictionary["top_level_window"]:
189+
self.root_window.mainloop()
162190

163191
# seperator
164192

@@ -275,32 +303,24 @@ def example_toggle():
275303
toggle.create_change_var_window()
276304

277305
def radio_example():
278-
radio = change_var_window(300, 350, "Radio Select")
279-
radio.change_var_window_values.update({"free_form": False, "toggle": False, "radio": True, "var_to_change": "w_audiocodec", "line_one": "Current value of w_audiocodec:", "line_two": vars_system.init_vars["w_audiocodec"]})
280-
radio.change_var_window_values.update({"radio_list": [("Windows Media Audio 9.2", "Windows Media Audio 9.2"), ("Windows Media Audio 9.2 Lossless", "Windows Media Audio 9.2 Lossless"), ("Windows Media Audio 10 Professional", "Windows Media Audio 10 Professional")]})
281-
#main_window.root_window.withdraw()
282-
radio.create_change_var_window()
306+
main_window.new_top_level(200, 250, "Radio")
307+
main_window.master_dictionary["top_level_window"] = True
308+
main_window.change_var_window_values.update({"free_form": False, "toggle": False, "radio": True, "var_to_change": "w_audiocodec", "line_one": "Current value of w_audiocodec:", "line_two": vars_system.init_vars["w_audiocodec"]})
309+
main_window.change_var_window_values.update({"radio_list": [("Windows Media Audio 9.2", "Windows Media Audio 9.2"), ("Windows Media Audio 9.2 Lossless", "Windows Media Audio 9.2 Lossless"), ("Windows Media Audio 10 Professional", "Windows Media Audio 10 Professional")]})
310+
main_window.create_change_var_window()
311+
283312
def print_radio_value():
284-
global radio_test_window
285313
messagebox.showinfo("Debug", radio_test_window.master_dictionary["radio_ctrl"].get())
286-
def radio_test():
287-
global radio_test_window
288-
radio_test_window = render_window(200, 250, "Test")
289-
radio_test_window.new_button("Dialog", print_radio_value, grid_column=1)
290-
radio_test_window.new_radio_button("Button 1", "btn1")
291-
radio_test_window.new_radio_button("Button 2", "btn2", grid_row=1)
292-
radio_test_window.new_radio_button("Button 3", "btn3", grid_row=2)
293-
radio_test_window.root_window.mainloop()
294314

295315

296316

297317
#seperator
298318

299319
vars_system = init_system()
300320

301-
main_window = render_window(200, 250, "Main Window")
321+
main_window = change_var_window(200, 250, "Main Window")
302322
main_window.new_button("Freeform Edit", freeform_example, 1, grid_columnspan=2)
303-
main_window.new_button("Toggle Var", radio_test)
323+
main_window.new_button("Toggle Var", example_toggle)
304324
main_window.new_button("Radio Var", radio_example, grid_column=1)
305325

306326
main_window.root_window.mainloop()

0 commit comments

Comments
 (0)