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  |   ---  |   ---  | 

enter image description here

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

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -