2017-02-19 1 views
0

sagen, dass ich ein tkinter Fenster mit zwei verschiedenen Rahmen habe, die ich mit Informationen füllen möchte, mein einziges Problem ist, dass die Rahmengröße sich dynamisch festlegt. Meine Fenstergröße beträgt 500 mal 500 und ich möchte, dass der obere Rahmen von 0,0 auf 250.250 geht. und der Boden von 0,250 bis 500,500. Ich denke, man könnte auf die Idee an dieser StelleWie man feste Rahmengrößen in Python einstellt tkinter

hier ist mein Code bekommen so weit:

def main_game(username,password,new_u,old_u): 
    Tk_window_center(500,500) 
    root.resizable(width=False, height=False) 
    ## 
    if new_u =="": 
     pass 
    else: 
     new_u.pack_forget() 
    if old_u =="": 
     pass 
    else: 
     old_u.pack_forget() 
    ## 
    output_window_frame=Frame(root, bg="black") 
    user_terminal_frame=Frame(root) 
    ## 
    usr_output=Label(output_window_frame) 
    user_inp=Entry(user_terminal_frame) 
    user_term=Label(user_terminal_frame) 
    ## 
    output_window_frame.grid(row=0,column=0,rowspan=3,columnspan=3, sticky="NSEW") 

    user_terminal_frame.grid(row=4,column=0,rowspan=3,columnspan=3, sticky="NSEW") 
    user_inp.pack(side="top", fill="x") 
    user_term.pack(side="bottom", fill="x") 

P. S. new_u und old_u sind vorherige Frames, die beim Start aktiviert werden

+0

Warum brauchen Sie genaue Größen! Normalerweise ist es das Beste, wenn die GUI schrumpft oder wächst, um zu ihrem Inhalt zu passen. Was ist das Besondere an 500 Pixeln? –

+0

@BryanOakley Ich mache das Spiel in einem fixxed Bildschirm und ich kann es dynamisch Größe ändern. es würde die "Immersion" ruinieren, die versucht, –

+0

zu erstellen Wenn Sie einen oberen und einen unteren Rahmen haben, warum ist der untere Rahmen in Reihe 4 eher als Reihe 1? –

Antwort

0

Da Sie grid verwenden, müssen Sie jeder Zeile das gleiche Nicht-Null-Gewicht geben, so dass jede Zeile so erweitert wird, dass sie die Hälfte des übergeordneten Elements ausfüllt. Sie setzen ein Fenster in Zeile 4, die in Ordnung ist, aber da Sie nur zwei Elemente im Fenster haben es irreführend ist, so empfehle ich mit Zeilen 0 und 1.

root.grid_rowconfigure(0, weight=1) 
root.grid_rowconfigure(4, weight=1) 

output_window_frame.grid(row=0,column=0,rowspan=3,columnspan=3, sticky="NSEW") 

user_terminal_frame.grid(row=1,column=0,rowspan=3,columnspan=3, sticky="NSEW") 

Natürlich, wenn Sie andere Dinge setzen in in Zeilen 1, 2 oder 3, dann sind Ihre Bilder nicht jeweils 250 Pixel groß.

Es gibt andere Möglichkeiten, dasselbe zu erreichen. Sie könnten pack verwenden und die Paketoptionen fill auf "both" und expand auf True einstellen. Oder Sie könnten place verwenden und das obere Fenster an der x/y-Koordinate von 0,0 mit einer relativen Breite von 1,0 und einer relativen Höhe von 0,5 platzieren und dann die andere wieder auf 250,250 mit einer relativen Breite von 1,0 und setzen eine relative Höhe von .5

Verwandte Themen