无法将滚动条添加到画布小工具



在iMac上使用Python 2.7.16。Python和这个论坛的新手。我有一个应用程序,它有一个画布小部件,用户可以在上面绘制,我想在上面添加滚动条。过去两天我一直在尝试,但没有成功。我看了很多例子,但我什么都做不出来。

我该怎么做?

下面是一个屏幕截图,将源代码分解为基本代码。在屏幕截图中,外部窗口上的滚动条。我想要绘图画布上的滚动条,这是黑色区域。

谢谢。

这就是我的代码示例所产生的。

这就是我的代码示例所产生的。

这就是我想要的带有滚动条的画布。

现在看起来像这个

#!/usr/bin/python

import Tkinter as tk

WINDOW_SIZE='950x650'


##########
# Size for canvas draring area
##########

MAX_X = 600
MAX_Y = 600


window = tk.Tk()
window.title("Cluster")
window.geometry(WINDOW_SIZE)

# Create a frame parent for the canvas and scrollbar(s).
p_frame = tk.Frame(window)
p_frame.grid(row=3, column=0, sticky=tk.NW) 


Canvas_frame = tk.Frame()
Canvas = tk.Canvas(window, bg="black", height = MAX_Y, width = MAX_X)

Canvas.pack();
coord = 10, 50, 240, 210
arc = Canvas.create_arc(coord, start=0, extent=150, fill="red")

line = Canvas.create_line(0, 0, 20, 20,  300, 300, 400, 400, fill="dark violet")

lbl = tk.Label(window, width=15, height=5, borderwidth=2, relief="groove", anchor="center", justify="center", text="fasfdasf") 
lbl.pack()

# Create a vertical scrollbar linked to the canvas.
vsbar = tk.Scrollbar(p_frame, orient=tk.VERTICAL, command=Canvas.yview)
vsbar.grid(row=0, column=1, sticky=tk.NS)
Canvas.configure(yscrollcommand=vsbar.set)

# Create a horizontal scrollbar linked to the canvas.
hsbar = tk.Scrollbar(p_frame, orient=tk.HORIZONTAL, command=Canvas.xview)
hsbar.grid(row=1, column=0, sticky=tk.EW)
Canvas.configure(xscrollcommand=hsbar.set)


# Start Tk's event loop
window.mainloop()

您不应该将滚动条放在画布内。通常,画布和滚动条应该共享一个共同的父级。

如果您希望滚动条看起来像在画布中一样,请创建一个带边框的框架,然后将画布和滚动条放在框架中。

最新更新