如何解决Python tkinker 调整画布
我有一个 python3 Tkinter 程序。我在主窗口中有 3 个框架,在一个框架中有一个带有滚动选项的画布 - 现在我想重新设置画布区域。 现在,如果我调整大小,它将 Y 的滚动条移出窗口,x 的滚动条也不会按预期工作(变大但滑动区域不会改变) 我如何管理它以在网格布局中调整画布的大小 - 窗口必须具有相同的大小,必须更新 Scrollbas 并且画布平面必须更大。 摘自我的代码:
import tkinter as tk
def menu_build():
caninfo[0] += 10
cangui.configure(width = caninfo[0])
#cangui.configure(scrollregion=cangui.bBox("all"))
def gui():
master = tk.Tk()
master.title( "Easy Switch" )
master.geometry("480x320")
frametop = tk.Frame(master,bg="blue",bd=2)
frametop.grid(column=0,row=0)
frameex = tk.Frame(master,bg="yellow",bd=2)
frameex.grid(column=1,row=1)
framegui = tk.Frame(master,bg="red",bd=2)
framegui.grid(column=0,columnspan=2,row=1)
menu = tk.Menu(master)
master.config(menu=menu)
filemenu = tk.Menu(menu)
menu.add_cascade(label="Config",menu=filemenu)
filemenu.add_command(label="Resize",command=menu_build)
global cangui
cangui = tk.Canvas(framegui,width=385,height=250)
#caninfo = [385,250]
cangui.grid(row=1,column=2)
scroll_x = tk.Scrollbar(framegui,orient="horizontal",command=cangui.xview)
scroll_x.grid(row=2,column=2,sticky="ew")
scroll_y = tk.Scrollbar(framegui,orient="vertical",command=cangui.yview)
scroll_y.grid(row=1,column=3,sticky="ns")
cangui.configure(yscrollcommand=scroll_y.set,xscrollcommand=scroll_x.set)
cangui.configure(scrollregion=cangui.bBox("all"))
cwcb = tk.Checkbutton(framegui,text="ccw").grid(row=2,column=0)
cangui.create_arc(90,90,110,style=tk.PIESLICE,width=4,start=0,extent=300)
master.mainloop()
global caninfo
caninfo = [385,250]
if __name__ == "__main__":
gui()
解决方法
无需调整画布区域的大小
写了一个额外的功能
win = [int(cangui.cget("width")),int(cangui.cget("height"))]
draw_xy = cangui.bbox("all")
swin = (min(0,draw_xy[0]),min(0,draw_xy[1]),max(draw_xy[2],win[0]),max(draw_xy[3],win[1]))
cangui.configure(scrollregion=swin)
原因:canvas.bbox("all") 只给出最上/左图的位置,我想要 0/0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。