【问题标题】:How to position a rectangle into upper left corner inside of a frame?如何将矩形定位到框架内的左上角?
【发布时间】:2014-03-02 14:03:57
【问题描述】:

我可以使用 tkinter 在框架内绘制一个矩形,但是当窗口最大化时,矩形不再位于框架的左上角。

如何将矩形固定到框架的左上角?

这就是我所拥有的:

from Tkinter import *

master = Tk()

f1 = Frame(height=100, bd=2, relief=RAISED)
f1.pack(fill=X, padx=3, pady=3)

c = Canvas(f1)
c.create_rectangle(1,1,100,90)
c.pack()

mainloop()

【问题讨论】:

    标签: python python-2.7 python-3.x tkinter


    【解决方案1】:

    您可以使用场所管理器,而不是使用包管理器。您将替换

    f1.pack(fill=X, padx=3, pady=3)
    

    f1.place(x=0,y=0)
    

    例如,参见this page。当然,使用绝对定位会使您的布局对特定的窗口尺寸非常敏感。

    【讨论】:

    • f1 框架位置没问题,从左上角一直延伸。这是我需要放在左上角的三角形。
    • 那你可以用place代替pack
    • 怎么样?这是行不通的。矩形在中间的某个地方。没有 rectangle.place()。
    • c.pack() 替换为 c.place(x=0,y=0) 适用于 Python 2.7.6。但是,使用您在答案中显示的c.pack(fill=X,padx=3, pady=3) 或使用c.pack(anchor=NW) 可能会更好。
    • 另外,您是否尝试过我上面的原始建议? f1.place(x=0,y=0) 在 Python 2.7.6 上运行良好,f1.pack(anchor=NW) 也是如此。问题是框​​架中的 fill=X 将填充放置在包含的部分(画布)周围,这与在画布内应用 fill=X 时所做的不同。
    【解决方案2】:

    在对上述代码进行了几次迭代之后,这对我有用:

    from Tkinter import *
    
    master = Tk()
    
    f1 = Frame(height=100, bd=2, relief=RAISED)
    f1.pack(fill=X, padx=3, pady=3)
    
    c = Canvas(f1)
    c.create_rectangle(1,1,100,90)
    c.pack(fill=X,padx=3, pady=3)
    
    mainloop()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多