Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Peter Otten <__peter__@web.de> Newsgroups: comp.lang.python Subject: Re: Tkinter spacing Date: Tue, 26 Jan 2016 09:07:59 +0100 Organization: None Lines: 71 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7Bit X-Trace: news.uni-berlin.de W4Uaf54dg4PkdUM+sQXYzAlgtGAPPBqh1nQy6QIiiu4Q== Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.001 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'root': 0.04; 'only,': 0.07; '0))': 0.09; 'pixels': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'dummy': 0.16; 'nonzero': 0.16; 'received:80.91.229.3': 0.16; 'received:dip0.t-ipconnect.de': 0.16; 'received:io': 0.16; 'received:plane.gmane.org': 0.16; 'received:psf.io': 0.16; 'received:t-ipconnect.de': 0.16; 'subject:Tkinter': 0.16; 'tk()': 0.16; 'wrote:': 0.16; 'nested': 0.18; 'say,': 0.18; 'tkinter': 0.22; 'import': 0.24; 'header:User- Agent:1': 0.26; 'header:X-Complaints-To:1': 0.26; 'way?': 0.29; 'entry': 0.31; 'help,': 0.32; 'could': 0.35; 'text': 0.35; 'label': 0.35; 'there': 0.36; 'to:addr:python-list': 0.36; 'subject:: ': 0.37; 'two': 0.37; 'thanks': 0.37; 'received:org': 0.37; 'to:addr:python.org': 0.40; 'received:de': 0.40; 'space': 0.40; 'some': 0.40; 'between': 0.65; '3))': 0.84; 'ttk': 0.84; 'average': 0.93 X-Injected-Via-Gmane: http://gmane.org/ X-Gmane-NNTP-Posting-Host: p57bd944a.dip0.t-ipconnect.de User-Agent: KNode/4.13.3 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.20+ Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Xref: csiph.com comp.lang.python:102108 KP wrote: > If I want to have some space between, say, btn_last & btn_new, will I have > to use a dummy label in between these two or is there a better way? > > Thanks for any help, as always! You could use nested frames with nonzero padding, e. g: nav_bar = ttk.Frame(root, borderwidth=2, relief='ridge', padding=(0, 3)) nav_bar1 = ttk.Frame(nav_bar, padding=(5, 0)) nav_bar1.pack(side=LEFT) btn_first = ttk.Button(nav_bar1, text='|<', width=4) btn_first.grid(column=0, row=0) ... nav_bar2 = ttk.Frame(nav_bar, padding=(5, 0)) nav_bar2.pack(side=LEFT) btn_new = ttk.Button(nav_bar2, text='New') btn_new.grid(column=0, row=0) ... > from tkinter import * > from tkinter import ttk > > root = Tk() > root.geometry("822x600+100+100") > nav_bar = ttk.Frame(root, borderwidth=2, relief='ridge', padding=(10, 3, > 10, 3)) > > btn_first = ttk.Button(nav_bar, text='|<', width=4) # for buttons > showing text only, this will be text units (= average characters?) > btn_prev = ttk.Button(nav_bar, text='<', width=4) # for image buttons, > it will be in pixels > btn_next = ttk.Button(nav_bar, text='>', width=4) > btn_last = ttk.Button(nav_bar, text='>|', width=4) > btn_new = ttk.Button(nav_bar, text='New') > btn_edit = ttk.Button(nav_bar, text='Edit') > btn_delete = ttk.Button(nav_bar, text='Delete') > btn_cancel = ttk.Button(nav_bar, text='Cancel') > btn_print = ttk.Button(nav_bar, text='Print') > btn_help = ttk.Button(nav_bar, text='Help') > btn_save = ttk.Button(nav_bar, text='Save') > lbl_Recs = ttk.Label(nav_bar, text='Records') > lbl_RCount = ttk.Label(nav_bar, text='0 ', width=10, borderwidth=2, > relief='sunken', anchor='e') # fake entry look > > nav_bar.grid(column=0, row=0, columnspan=13) > > btn_first.grid(column=0, row=0) > btn_prev.grid(column=1, row=0) > btn_next.grid(column=2, row=0) > btn_last.grid(column=3, row=0) > > btn_new.grid(column=4, row=0) > btn_edit.grid(column=5, row=0) > btn_delete.grid(column=6, row=0) > btn_cancel.grid(column=7, row=0) > > lbl_Recs.grid(column=8, row=0, padx=5) > lbl_RCount.grid(column=9, row=0, padx=5) > btn_print.grid(column=10, row=0) > btn_help.grid(column=11, row=0) > btn_save.grid(column=12, row=0) > > root.mainloop()