2016-09-27 8 views
0

so ich eine GUI erstellen und ich möchte im Wesentlichen zwei verschiedene "Symbolleisten" an der Spitze der GUI, ähnlich this.
Derzeit habe ich die entsprechenden Schaltflächen für jede Symbolleiste in zwei verschiedenen entsprechenden Frames namens Toolbar und Selectbar. Auf jeder Taste Ich nenne .pack(), um sie in den Symbolleisten zu formatieren und dann auf jeder Symbolleiste nenne ich
toolbar.grid(row=0, column=0, sticky='NW')
selectbar.grid(row=0, column=1, sticky='NE')
Allerdings glaube ich nicht, das ist richtig, weil sie zwei verschiedene „Grids“ dass es versucht, in den jeweiligen Spalten zu platzieren. Es gibt mir immer noch etwas nah an dem gewünschten Produkt in diesem: this.
Allerdings habe ich mich gefragt, wie ich diese beiden Frames in einen größeren Rahmen "kombinieren" würde, so dass ich möglicherweise .configurecolumn(0, weight=1) verwenden könnte, um die erste Symbolleiste auf dem Bildschirm weiter zu strecken.Tkinter formatieren mehrere Frames nebeneinander

Im Wesentlichen habe ich mich gefragt, wie ich diese beiden "Symbolleisten" nebeneinander haben könnte, aber die erste mit der Leerstelle erweitern.

Edit: Hier ist der Code mit einigen Teilen weggelassen.

from tkinter import * 
    from MenuBar import * 
    from ToolBar import * 
    import tkinter.ttk 

class App(Tk): 
def __init__(self): 
    Tk.__init__(self) 


    #Creates the MenuBar 
    menubar = MenuBar(self) 
    self.config(menu=menubar) 

    #Creates the ToolBar 
    toolbar = Frame(bg="#f2f2f2", bd=1, relief=RAISED, width=1000) 

    newUndIcon = itk.PhotoImage(file="Icons/newUndirected.png") 
    newDirIcon = itk.PhotoImage(file="Icons/newDirected.png") 
    b0 = Button(toolbar, text="Create a new undirected graph", image=newUndIcon, relief=FLAT) 
    b1 = Button(toolbar, text="Create a new directed graph", image=newDirIcon, relief=FLAT) 
    b2 = Button(toolbar, text="Open an existing graph", image=openIcon, relief=FLAT) 
    b3 = Button(toolbar, text="Save graph", image=saveIcon, relief=FLAT) 
    b0.img = newUndIcon 
    b1.img = newDirIcon 
    b2.img = openIcon 
    b3.img = saveIcon 
    b0.pack(side=LEFT, padx=2, pady=2) 
    b1.pack(side=LEFT, padx=2, pady=2) 
    b2.pack(side=LEFT, padx=2, pady=2) 
    b3.pack(side=LEFT, padx=2, pady=2)  

    #toolbar.pack(side=TOP, fill=X) 
    toolbar.grid(row=0, sticky='NW') 
    toolbar.columnconfigure(1, weight=1) 

    selectBar = Frame(bg="#f2f2f2", bd=1, relief=FLAT) 
    c0 = Button(selectBar, image=newUndIcon, relief=FLAT) 
    c1 = Button(selectBar, image=newDirIcon, relief=FLAT) 
    c2 = Button(selectBar, image=vertexIcon, relief=FLAT) 

    c0.img = newUndIcon 
    c1.img = newDirIcon 
    c2.img = vertexIcon 

    c0.pack(side=LEFT, padx=2, pady=2) 
    c1.pack(side=LEFT, padx=2, pady=2) 
    c2.pack(side=LEFT, padx=2, pady=2) 

    selectBar.grid(row=0, column=1, sticky='NW') 
    selectBar.columnconfigure(1, weight=1) 



    app=App() 
    app.iconbitmap('Icons/titleIcon.ico') 
    app.title("GMPX") 
    app.geometry('900x600') 
    app.config(bg="#FFF") 
    app.mainloop() 
    app.destroy() 

Antwort

1

Sie können versuchen, die toolbar und selectBar in einem Frame setzen, und verwenden Sie pack() statt grid():

topbar = Frame(self) 
.... 
toolbar = Frame(topbar, ...) 
toolbar.pack(side=LEFT, fill=X, expand=True) 
... 
selectBar = Frame(topbar, ...) 
selectBar.pack(side=RIGHT) 
... 
topbar.pack(fill=X) 
Verwandte Themen