tkinterのレイアウトに関して問題があります。これは私が持っていると思います Layoutであり、これはなぜこれが起こっている私は理解していないです何I have right now. です。私は特定のフレームの幅と高さを指定すると、この場所をすべて取ると思っていましたが、これはself.GameStatFrame
を見ていません。誰かが私になぜコードが何をしているのか、私の間違いが何であったのかを説明することができればうれしいです。ここでTkinterのレイアウトの問題
コードです:
class Application(tk.Frame):
def __init__(self, parent):
self.parent = parent
tk.Frame.__init__(self, parent)
#self.update_idletasks()
self.createWidgets()
def createWidgets(self):
#new frame for everything not in the canvas
#self.Frame = tk.Frame(self.parent)
self.MlGameStatFrame = tk.Frame(self.parent, width=600, height=300,
bg='blue')
self.GameStatFrame = tk.Frame(self.MlGameStatFrame, bg='white',
width=300, height=300)
self.MlFrame = tk.Frame(self.MlGameStatFrame, bg='white',
width=300, height=300)
#self.Frame.pack()
self.createGraphWidget()
self.MlGameStatFrame.pack()
self.GameStatFrame.pack(side=tk.LEFT, anchor=tk.W, fill=tk.BOTH)
self.MlFrame.pack(side=tk.BOTTOM, fill=tk.BOTH)
self.createGameStats(self.GameStatFrame)
self.createMlStats(self.MlFrame)
#self.createLog()
def createGraphWidget(self):
self.graph = tk.Canvas(self.parent, background ='white',
width=200,height=300)
self.graph.create_rectangle(0,20,40,50)
self.graph.pack(side=tk.TOP,fill=tk.X)
# needs to get a frame because side by side with Ml stats
def createGameStats(self,GameFrame):
Frame1 = tk.Frame(GameFrame, bg='red', width=300)
tk.Label(Frame1, text="Status: ").pack(side=tk.LEFT, expand=tk.YES)
#initialize with certain value for now
self.statusChange = tk.Label(Frame1,
text="Learning").pack(side=tk.LEFT, expand=tk.YES)
Frame2=tk.Frame(GameFrame, bg='green')
tk.Label(Frame2, text="Fitness").pack(side=tk.LEFT, expand=tk.YES,
anchor=tk.W) #could get changed
self.fitnessChange = tk.Label(Frame2, text="6").pack(side=tk.LEFT,
expand=tk.YES)
Frame1.pack(side=tk.TOP, anchor=tk.W)
Frame2.pack(side=tk.TOP,fill=tk.X, anchor=tk.W)
def createMlStats(self, MlFrame):
Frame1 = tk.Frame(MlFrame)
tk.Label(Frame1, text="Status: ").pack(side=tk.LEFT, expand=tk.YES)
# initialize with certain value for now
self.statusChange = tk.Label(Frame1,
text="Learning").pack(side=tk.LEFT, fill=tk.X, expand=tk.YES)
Frame2=tk.Frame(MlFrame)
tk.Label(Frame2, text="Fitness").pack(expand=tk.YES, anchor=tk.W)
self.fitnessChange = tk.Label(Frame2, text="6").pack(side=tk.LEFT,
fill=tk.X, expand=tk.YES)
Frame1.pack(side=tk.TOP, fill=tk.BOTH,anchor=tk.W)
Frame2.pack(side=tk.TOP,fill=tk.BOTH)
def main():
root = tk.Tk()
root.geometry('600x900-0+0') #120* 50 ppixels in top right corner of desktop
app = Application(root)
app.master.title('Sample application')
app.mainloop()
if __name__ == '__main__':
main()
コードのインデントが正しくありません。 –