【发布时间】:2017-02-04 16:14:20
【问题描述】:
在 tkinter,python 中,我目前正在尝试输出,所以当单击按钮时,将有角度的线(指向 45 度方向)放在画布上。这是我到目前为止尝试过的代码:
from tkinter import *
root = Tk()
root.geometry("900x900")
canvas = Canvas(root, width=800, height=820)
canvas.pack()
png = PhotoImage(file = r'C:\Users\--\Desktop\Programming\GP\europe1.gif') #Map of europe
canvas.create_image(0, 0, image = png, anchor = "nw")
london = canvas.create_rectangle(5, 0, 10, 5, fill='red')
londontext = canvas.create_text(10, 10, text="London") #Creating labelled cities for europe picture
paris = canvas.create_rectangle(5, 0, 10, 5, fill='red')
paristext = canvas.create_text(10, 10, text="Paris")
canvas.move(london, 226, 390)
canvas.move(londontext, 210, 374)
canvas.move(paristext, 230, 447) # Sets correct coords for the two cities
canvas.move(paris, 247, 462)
def gotoparis():
parisline = canvas.create_line(100, 0, 100, 100, 45)
def gotolondon(): # Trying to make a line form between the two cities
londonline = canvas.create_line(100, 0, 100, 100, 45)
def londonclick(event):
londoninterface = Tk()
londoninterface.geometry("400x400")
ll = Label(londoninterface, text="London Airport")
ll.pack()
blank = Label(londoninterface, text="") # Creating new windows
blank.pack()
l1 = Label(londoninterface, text="Send Flight To:")
l1.pack()
toparis = Button(londoninterface, text="Paris", command=gotoparis)
toparis.pack()
def parisclick(event):
parisinterface = Tk()
parisinterface.geometry("400x400")
ll = Label(parisinterface, text="Paris Airport")
ll.pack()
blank = Label(parisinterface, text="")
blank.pack()
l1 = Label(parisinterface, text="Send Flight To:")
l1.pack()
tolondon = Button(parisinterface, text="London")
tolondon.pack()
canvas.tag_bind(london, '<ButtonPress-1>', londonclick) # Makes it so when rectangle is clicked, a new window pops up
canvas.tag_bind(paris, '<ButtonPress-1>', parisclick)
正如您可能知道的那样,我正在尝试制作一个类似机场的游戏,您可以在其中将飞机设置到目的地,并以此创建一条最终到达的路线。这段代码有点难以理解我想要做什么,但简而言之,我想在单击 tkinter 按钮时在两个画布创建的矩形之间创建一条线。澄清一下,我使用的是 python 3.5.2 tkinter。 此外,此代码不会创建错误消息或任何类型的错误,但不会执行我希望它执行的操作。基本上就是这样总结了。
【问题讨论】:
-
我在点击伦敦点后点击
Paris按钮时收到错误消息:_tkinter.TclError: wrong # coordinates: expected an even number, got 5,因为您在canvas.create_line(100, 0, 100, 100, 45)中给出了 5 个坐标而不是偶数。 -
45 表示角度大小,例如45°角
-
我在您的问题中没有看到任何问题。你有什么需要帮助的?您所做的只是告诉我们您想做什么,但没有解释您遇到的问题。
-
您是否在某处阅读过一些说明
create_line方法将角度作为参数的文档?它没有。 -
我想尝试这样做,当单击按钮时,会在两点之间创建一条线,但我不知道如何。