在画布内创建框架?

时间:2018-07-11 23:13:03

标签: python tkinter

我创建了一个Canvas,在其中创建了一个Window,并将其中的一个Frame包装到其中。但是,当我尝试将Entry小部件打包到该Frame中时,该小部件会出现在框架或画布的右下角,其中一部分在屏幕上,而一部分则处于关闭状态屏幕。

我做了什么以及如何将tkinter小部件打包到我的Frame中?

编辑:使用Canvas的原因是为了以后可以滚动。

try:
    import tkinter as t
    from tkinter import *
except ImportError:
    import Tkinter as t
    from Tkinter import *

class Window:
    def __init__(self, master):

        canvas = Canvas(master, height=450, width=450, bg="white")
        canvas.pack()

        frame1 = Frame(master)
        frame1.pack()
        MainWindow = canvas.create_window(450,450,window=frame1)

        e1 = Entry(frame1)
        e1.pack()


root = Tk()
root.resizable(0,0)
root.geometry("450x450")
root.title("Test")
root.configure(background="#212F3C")
window = Window(root)
root.mainloop()

1 个答案:

答案 0 :(得分:2)

您正在将画布放置在画布坐标系中的450、450处。由于默认锚点位于窗口的中间,因此您将位于框架的左上角。尝试将其放置在其他位置:

MainWindow = canvas.create_window(10,10,window=frame1, anchor='nw')

现在它的左上角是10,10。而且您不需要pack()框架。 create_window()是画布的包装方式。 (但是您确实需要将条目打包在frame1中。)