2017-12-30 87 views
1

私のスクリプトにキャンバスを並べて表示する際に問題があります。 私はレイアウトでスペースを節約するために、それぞれが販売された車の数量をユーザーが満たしている5つのボックスを作成したい、これらの5つのボックスを同じ行に並べて並べる(並べて並べる)Tkinterとキャンバスを並べて表示する

これまでのところ、私は側でこれらのボックス側を置くにはどうすればよい(お互いの下のボックス)以下のスクリプトを使用して、以下のような状況

enter image description here

Label(self.canvas, text='North', bg="gray", fg="black").pack() 
    self.nom4=Entry(self.canvas,width=10,bg="white",\ 
        fg="blue") 
    self.nom4.pack() 

    Label(self.canvas, text='Northeast', bg="gray", fg="black").pack() 
    self.nom5=Entry(self.canvas,width=10,bg="white",\ 
        fg="blue") 
    self.nom5.pack() 

    Label(self.canvas, text='Midwest', bg="gray", fg="black").pack() 
    self.nom6=Entry(self.canvas,width=10,bg="white",\ 
        fg="blue") 
    self.nom6.pack() 

    Label(self.canvas, text='Southeast', bg="gray", fg="black").pack() 
    self.nom7=Entry(self.canvas,width=10,bg="white",\ 
        fg="blue") 
    self.nom7.pack() 

    Label(self.canvas, text='South', bg="gray", fg="black").pack() 
    self.nom8=Entry(self.canvas,width=10,bg="white",\ 
        fg="blue") 
    self.nom8.pack() 

を得ましたか。

答えて

2

一つの解決策はFrame秒で「箱」を置いて、sideオプションが'left'として設定されているとpackを使用してそれらを表示するようになり、事前に ありがとう:

from tkinter import * 

root = Tk() 

canvas = Canvas(root) 


frame4 = Frame(canvas) 
Label(frame4, text='North', bg="gray", fg="black").pack() 
nom4=Entry(frame4,width=10,bg="white", fg="blue") 
nom4.pack() 
frame4.pack(side='left') 

frame5 = Frame(canvas) 
Label(frame5, text='Northeast', bg="gray", fg="black").pack() 
nom5=Entry(frame5,width=10,bg="white", fg="blue") 
nom5.pack() 
frame5.pack(side='left') 

frame6 = Frame(canvas) 
Label(frame6, text='Midwest', bg="gray", fg="black").pack() 
nom6=Entry(frame6,width=10,bg="white", fg="blue") 
nom6.pack() 
frame6.pack(side='left') 

frame7 = Frame(canvas) 
Label(frame7, text='Southeast', bg="gray", fg="black").pack() 
nom7=Entry(frame7,width=10,bg="white", fg="blue") 
nom7.pack() 
frame7.pack(side='left') 

frame8 = Frame(canvas) 
Label(frame8, text='South', bg="gray", fg="black").pack() 
nom8=Entry(frame8,width=10,bg="white", fg="blue") 
nom8.pack() 
frame8.pack(side='left') 


canvas.pack() 

root.mainloop() 

注:これは、ボックスクラスのために頼みます。 Boxクラスと


例:

import tkinter as tk 

class Box(tk.Frame): 
    def __init__(self, master, cardinal_direction): 
     super().__init__(master) 

     tk.Label(self, text=cardinal_direction, bg="gray", fg="black").pack() 
     self.entry = tk.Entry(self, width=10,bg="white", fg="blue") 
     self.entry.pack() 

if __name__ == '__main__': 

    root = tk.Tk() 

    canvas = tk.Canvas(root) 

    boxes = dict() 

    for card_dir in ['North', 'South', 'East', 'West']: 
     boxes[card_dir] = Box(canvas, card_dir) 
     boxes[card_dir].pack(side='left') 

    canvas.pack() 

    root.mainloop() 
+0

@RafaelRodriguesSantos問題ありません。よく尋ねられる質問を解決できることは、常に幸せです。 – Nae

関連する問題