사용자가 창 가장자리에서 '클릭하여 끌기'를 사용하여 창 크기를 조정할 때 캔버스가 전체 창을 채울 수 있도록 캔버스의 크기를 조정 하려는데 성공하지 못했습니다.파이썬 tkinter 프레임 캔버스 크기 조정
나는 다음과 같은 다른 질문을 살펴 보았다 :
질문 # 1 (이전에 게시하지만, 여기에 도움이되지 않습니다) 나는 구성을 결합하기 때문에
이것은 내가 올바른 방향으로 무슨 생각으로 나를 보내 캔버스에. 그러나 "캔버스가 FrameWidth에 정의되어 있지 않습니다."라는 오류가 나타납니다. "FrameWidth (1)없는 위치 인수가 필요합니다 : 형식 오류는 '캔버스'를"나는 함수 호출 및 기능을 수정하는 경우
Tkinter: How to get frame in canvas window to expand to the size of the canvas?
, 그때 내가 그 오류 수정은
canvas.bind('<Configure>', self.FrameWidth(canvas))
def FrameWidth(self, event, canvas):
입니다
:
질문 # 2 (이전에 게시하지만, 여기에 도움이되지는)
나는이 질문을 보았다
하지만이 질문은 잘못 움직이는 스크롤바를 다루고 있습니다.
질문 # 3 (이전에 게시하지만, 여기에 도움이되지 않습니다)
나는이 질문에 고개 무게 = 1에 넣어, 그러나 그것은 도움이되지 않은 :
하나를 조언을 부탁드립니다.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Nov 3 04:39:43 2017
@author: davidc
"""
import tkinter as tk
class Selections(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.FifthLabelLeft = tk.Label(self,
text="""Riding""",
justify = tk.CENTER,
width=20,
padx = 10).grid(row=4, column = 0, pady=5)
self.FifthLabelCenter = tk.Label(self,
text="""Winning Candidate""",
justify = tk.CENTER,
width=20,
padx = 10).grid(row=4, column = 1, pady=5)
self.FifthLabelRight = tk.Label(self,
text="""Percent of Vote""",
justify = tk.CENTER,
width=10,
padx = 10).grid(row=4, column = 2, pady=5)
mybox = tk.LabelFrame(self, padx=5, pady=4)
mybox.grid(row=5, column=0, columnspan=3)
canvas = tk.Canvas(mybox, borderwidth=5, background="#70ff33")
frame = tk.Frame(canvas, background="#33f4ff")
vsb = tk.Scrollbar(mybox, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set, width=450, heigh=30)
mybox.grid_columnconfigure(5,weight=1)
mybox.grid_rowconfigure(5,weight=1)
frame.grid_columnconfigure(5,weight=1)
frame.grid_rowconfigure(5,weight=1)
vsb.pack(side="right", fill="y")
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((4,4), window=frame, anchor="nw", tags="frame")
# be sure that we call OnFrameConfigure on the right canvas
frame.bind("<Configure>", lambda event: self.OnFrameConfigure(canvas))
canvas.bind('<Configure>', self.FrameWidth)
self.fillWindow(frame)
self.QuitButton = tk.Button(self,
text="QUIT",
command=root.destroy,
padx=25, pady=0)
self.QuitButton.grid(column = 0, columnspan=3)
def fillWindow(self, frame):
PartyWinnersList = [['Some list of places', "Somebody's Name", 0.37448599960838064],
['A shorter list', 'Three Long Names Here', 0.52167817821240514],
['A much longer, longer entry', 'Short Name', 0.41945832387008858]]
placement = 2
for i in PartyWinnersList:
ShowYear = tk.Label(frame,
text="""%s """ % i[0],
width=20,
)
ShowYear.grid(row=placement, column = 0, sticky=tk.S)
ShowSystem = tk.Label(frame,
text="""%s """ % i[1],
width=20,
)
ShowSystem.grid(row=placement, column = 1, sticky=tk.N)
PercentVotes = i[2]*100
ShowVotes = tk.Label(frame,
text="""%3.1f""" % PercentVotes,
width=10,
)
ShowVotes.grid(row=placement, column = 2, sticky=tk.N)
placement += 1
def FrameWidth(self, event):
canvas_width = event.width
canvas.itemconfig(self.canvas_frame, width = canvas_width)
def OnFrameConfigure(self, canvas):
canvas.configure(scrollregion=canvas.bbox("all"))
if __name__ == "__main__":
root = tk.Tk()
main = Selections(root)
main.pack(side="top", fill="both", expand=True)
root.mainloop()
실제로 무엇을하려고합니까? 전체 창을 채울 수 있도록 캔버스 크기를 조정 하시겠습니까? – SneakyTurtle
예, 사용자가 창 가장자리에서 '클릭하여 끌기'를 사용하여 창 크기를 조정할 때 캔버스가 전체 창을 채울 수 있도록 캔버스의 크기를 조정하십시오. –