如何在画布上画线?

时间:2014-09-06 14:40:01

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

我已经在互联网上阅读了一些教程,但我似乎无法找到任何能告诉我如何划线的内容

有人可以帮忙吗?

我试过

p = Canvas(height = 600, width = 800).place(x=0,y=0)
p.create_rectangle(50, 25, 150, 75, fill="blue")

并且,不幸的是,它没有用。

2 个答案:

答案 0 :(得分:5)

不完全确定你在问什么,因为你既没有向我们展示你的完整代码,也没有说明究竟什么“不起作用”。看来你已经找到了如何绘制一个矩形,同样的教程也应该有关于绘制线的东西,比如the one linked in the comments

由于这似乎对您没有帮助,可能问题在于您使用的是Python 3,其中Tkinter包已重命名为tkinter。这个例子适合你:

import tkinter

root = tkinter.Tk()
canvas = tkinter.Canvas(root)
canvas.pack()

for i in range(10):
    canvas.create_line(50 * i, 0, 50 * i, 400)
    canvas.create_line(0, 50 * i, 400, 50 * i)
canvas.create_rectangle(100, 100, 200, 200, fill="blue")
canvas.create_line(50, 100, 250, 200, fill="red", width=10)

root.mainloop()

附录: 我刚刚注意到你的代码存在两个实际问题:

  • 通过执行p = Canvas(height = 600, width = 800).place(x=0,y=0),变量p分配Canvas,但返回值为place,即{{ 1}}。
  • 此外,构造函数应该包含您要将None添加到我的示例中的Canvas的父元素。

这是very thorough introduction to all of Tkinter,特别是Canvas元素。

答案 1 :(得分:0)

http://www.python-course.eu/tkinter_canvas.php

您的答案如何使用画布绘制任何一行。

学习tkinter的重要来源。 我希望它对你有用,就像我一样

from tkinter import *    
canvas_width = 500
canvas_height = 150

def paint( event ):
   python_green = "#476042"
   x1, y1 = ( event.x - 1 ), ( event.y - 1 )
   x2, y2 = ( event.x + 1 ), ( event.y + 1 )
   w.create_oval( x1, y1, x2, y2, fill = python_green )

master = Tk()
master.title( "Painting using Ovals" )
w = Canvas(master, 
           width=canvas_width, 
           height=canvas_height)
w.pack(expand = YES, fill = BOTH)
w.bind( "<B1-Motion>", paint )

message = Label( master, text = "Press and Drag the mouse to draw" )
message.pack( side = BOTTOM )

mainloop()

我刚从网站上复制过来。