python - Prevent Label to be re-aligned after askdirectory() is closed -
i built window display labels, entry field , button. button opens tkinter.filedialog.askdirectory(). after choose directory , close dialog label updated along text entry choice.
the problem after happens description of text entry (another label on left) realigned in cell. don't know why happens, there behind-the-scenes behaviour i'm not aware of?
here's sample code use.
from tkinter import * tkinter import filedialog tkinter import ttk def folderdiag(): scanfolder.set(filedialog.askdirectory()) c = (n, w, s, e) scanfolder = stringvar() root = tk() root.title("testing") root.columnconfigure(0, weight=1) root.rowconfigure(0, weight=1) frame = ttk.frame(root, padding="3") frame.grid(column=0, row=0, sticky=c) frame.columnconfigure(0, weight=1) frame.columnconfigure(1, weight=1) frame.columnconfigure(2, weight=1) frame.rowconfigure(0, weight=1) frame.rowconfigure(1, weight=1) frame.rowconfigure(2, weight=1) ttk.label(frame, text="welcome!", font="tkdefaultfont 24 bold").grid(column=0, row=0, columnspan=4, sticky=c) # label centered after dialog closed ttk.label(frame, text="select folder scan:").grid(column=0, row=1, sticky=e) ttk.label(frame, textvariable=scanfolder).grid(column=2, row=2) scan_folder_entry = ttk.entry(frame, textvariable=scanfolder).grid(column=3, row=1) browse_button = ttk.button(frame, text="browse...", command=folderdiag).grid(column=4, row=1) root.mainloop() exit(1)
if understand correctly, need this:
| 0 | 1 | 2 | # column number | welcome! | | select | entry | button | | label | so:
from tkinter import * tkinter import filedialog tkinter import ttk def folderdiag(): scanfolder.set(filedialog.askdirectory()) root = tk() c = (n, w, s, e) scanfolder = stringvar() root.title("testing") root.columnconfigure(0, weight=1) root.rowconfigure(0, weight=1) frame = ttk.frame(root, padding="3") frame.grid(column=0, row=0, sticky=c) frame.columnconfigure(0, weight=0) frame.columnconfigure(1, weight=1) frame.columnconfigure(2, weight=0) frame.rowconfigure(0, weight=1) frame.rowconfigure(1, weight=1) frame.rowconfigure(2, weight=1) ttk.label(frame, text="welcome!", font="tkdefaultfont 24 bold").grid(column=0, row=0, columnspan=3, sticky=c) ttk.label(frame, text="select folder scan:").grid(column=0, row=1, sticky=e) ttk.label(frame, textvariable=scanfolder, justify=left).grid(column=0, columnspan=3, row=2, sticky=w) scan_folder_entry = ttk.entry(frame, textvariable=scanfolder) scan_folder_entry.grid(column=1, row=1, sticky=ew) browse_button = ttk.button(frame, text="browse...", command=folderdiag) browse_button.grid(column=2, row=1) root.mainloop() your code create layout:
| 0 | 1 | 2 | 3 | 4 | | welcome | --- | | select | - | --- | entry | button | | --- | - | label | --- | --- | 
for reason leave #1 empty. width = const = 0. forget it.
select doesn't attached entry. columns #1 , #2 separate them. select attached right edge of #0 column.
when update label increase width of #2 column => increase space between #0 (select) , #3 (entry). select stay attached right edge of #0.
Comments
Post a Comment