python - 一些 Tkinter create_line 命令不绘制垂直线,但其他命令却绘制垂直线

标签 python user-interface tkinter line

我有一个 Tkinter 项目,其中包含一个用于绘制线条的类。更新:这是一个您可以运行的代码片段,它可以在我的计算机上重现该问题。我认为它只是拒绝绘制垂直线?

import tkinter as tk
Unit=32
class Region:
    def __init__(self, name, mapWidth, mapHeight, gen):
        self.name=name
        self.mapWidth=mapWidth
        self.mapHeight=mapHeight
        self.gen=gen
        self.locations={}
        self.current_loc_area = 1
        self.current_pokemon =[]

class Route:
    thick = 24
    global Unit
    def __init__(self, x1, y1, x2, y2, color, number):
        self.x1 = (x1 * 32)- (Unit/2)
        self.y1 = (y1 * 32)- (Unit/2)
        self.x2 = (x2 * 32)- (Unit/2)
        self.y2 = (y1 * 32)- (Unit/2)
        self.color = color
        self.number = number
        self.tag = None
        self.areaData = None
        self.loc_url='None'
        self.trimColors = ['#39314B','#EEA160']

    def constructRoute(self):
        self.tag = myRegion.name + "-route-" + str(self.number)
        C.create_line(self.x1, self.y1, self.x2, self.y2, fill=self.trimColors[0], width=self.thick+8)
        C.create_line(self.x1, self.y1, self.x2, self.y2, fill=self.trimColors[1], width=self.thick)
        C.create_line(self.x1, self.y1, self.x2, self.y2, fill=self.color, width=self.thick-8, tags=self.tag)

land_color='#BF7958'
root= tk.Tk()
myRegion = Region('johto', 24, 18, 2)
#create canvas-----
C=tk.Canvas(root, width=myRegion.mapWidth * 32, height=myRegion.mapHeight * 32)
C.pack()  

#Construct Routes and Towns--------------

route29Inst = Route(17,12, 20,12, land_color, 29)
route29 = route29Inst.constructRoute()

route30Inst = Route(8,7, 8,9, land_color, 30)
route30 = route30Inst.constructRoute()

route31Inst = Route(15,7, 16,7, land_color, 31)
route31 = route31Inst.constructRoute()

route32Inst = Route(14,8, 14,14, land_color, 32)
route32 = route32Inst.constructRoute()

route33Inst = Route(13,15, 14,15, land_color, 33)
route33 = route33Inst.constructRoute()

route34Inst = Route(11,15, 10,15, land_color, 34)
route34 = route34Inst.constructRoute()

root.mainloop()

当我对某些线路(29 - 34 号路线)执行此操作时,大约有 1/2 的线路出现了,我无法弄清楚它出了什么问题。它似乎只对某些线条造成错误,我认为这只是垂直绘图。即使是对角线图也不起作用。过去一个月一切都运行良好,直到我开始修改“Unit”变量并添加更多路线。要进行测试,请更改“routeXInst”实例中的数字对。这些数字对是一条线的起点和终点。 (抱歉,如果我的词汇很奇怪,我还是个新人)

最佳答案

问题出在我的类定义中的 1 个字符:

self.y2 = (y1 * 32) - 单位/2

这将导致第二个垂直点与第一个垂直点完全相同。

显然必须是: self.y2 = (y2 * 32) - Unit/2

为了节省时间,我屈服于复制和粘贴的危险,结果却让我遭受了很多挫败感。经验教训:不要急于完成代码!!!一定要非常慎重。仔细检查一下。感觉自己像个傻瓜:)

关于python - 一些 Tkinter create_line 命令不绘制垂直线,但其他命令却绘制垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52982338/

相关文章:

python - 如何根据条件删除 python tkinter 标签?

python - 由于某种原因它只显示一个 if 语句

python - 你如何在 python 中将随机值排序为数字顺序?

python - 使用 python 从 html 中删除/**/

python - 如何在Python中获取 'data.isnull().sum()'的值

C++ 开发 GUI - 类?

c# - WPF 和 FontAwesome 连字符图标问题

python - 使用 python 客户端从 VM 创建镜像

java - GUI (java) 中的 jTable 不显示数据库中的所有数据!表模型中的错误?

python - 带有图像的标签周围有白色边框?