Python 循环创建.line tkinter

Python 循环创建.line tkinter,python,tkinter,Python,Tkinter,大家早上好 我的代码有问题。我从一个file.txt文件中得到一个列表。我想用Tkinter创建线工具,自动创建一个图形 请注意,我的列表可以包含4项,比如30项 所以我想浏览我的整个列表,直到最后 代码如下: from tkinter import * # Fenêtre root = Tk() Largeur = 1200 Hauteur = 800 canvas = Canvas(root, width=Largeur, height=Hauteur, background="whit

大家早上好

我的代码有问题。我从一个file.txt文件中得到一个列表。我想用Tkinter创建线工具,自动创建一个图形

请注意,我的列表可以包含4项,比如30项

所以我想浏览我的整个列表,直到最后

代码如下:

from tkinter import *

# Fenêtre
root = Tk()
Largeur = 1200
Hauteur = 800

canvas = Canvas(root, width=Largeur, height=Hauteur, background="white")
canvas.pack(side=LEFT, padx=5, pady=5)
root.resizable(width=False, height=False)
root.title('Heating Draw')

with open("valeur_x_y.txt", "r+") as file:
    liste_complet = file.readlines()
    file.close()

canvas.create_line(liste_complet[0], liste_complet[1], liste_complet[2], liste_complet[3], fill="red", width=3)
canvas.create_line(liste_complet[2], liste_complet[3], liste_complet[4], liste_complet[5], fill="red", width=3)
canvas.create_line(liste_complet[4], liste_complet[5], liste_complet[6], liste_complet[7], fill="red", width=3)

root.mainloop()
你能帮我吗


谢谢

这是我想到的。假设将.txt文件格式化为以下格式:

10, 10
20, 20
20, 20
40, 30
40, 30
80, 40
...
从tkinter导入*
#芬特
root=Tk()
大耳=1200
傲慢=800
画布=画布(根,宽=大,高=傲慢,背景=“白色”)
帆布包装(侧面=左侧,padx=5,pady=5)
根。可调整大小(宽度=假,高度=假)
root.title('Heating Draw')
打开(“valeur_x_y.txt”,“r+”)作为文件:
liste_complett=file.readlines()
liste_complett=“,”。连接(liste_complett)#将其连接到字符串
liste_complett=liste_complett.replace(“\n”,”)#使其仅为1行
liste_complett=liste_complett.split(“,”)#返回数组,其中一个值是一个数字
file.close()文件
i=0#为以后的绘图声明索引

虽然(i我刚刚测试过,但它工作得非常好

现在,根据你所做的循环,我想得出下面的结果。我已经用Turtle模块对所有内容进行了编码,但是我不能在同一个窗口上同时使用Turtle和Tkinter,这就是为什么我告诉自己我要用Tkinter做所有事情

下面是海龟代码和预期的最终结果

from turtle import *

screen = Screen()

# Paramètre Turtle line1 et line2
line1 = Turtle()
line2 = Turtle()

# Définition des variables modifiables
color_table=["blue", "red"]
star_x = -160
star_y = 10
line1_size_x = 200
#line1_size_y = 200
line_pensize = 3
rotation_line = 90
entre_line = 20

# Import de la ligne1
line1.hideturtle()
line1.color(color_table[1])
line1.pensize(line_pensize)

#Import de la ligne 2:
line2.hideturtle()
line2.pensize(line_pensize)
line2.color(color_table[0])
line2_size = line1_size_x - entre_line

# Position de la ligne1
line1.penup()
line1.setposition(star_x, star_y)
line1.pendown()

# Boucle de traçage automatique
while True:
    line1.forward(line1_size_x)
    line1.left(rotation_line)
    line1_size_x -= entre_line / 2
    if line1_size_x <= entre_line / 2:
        break

# Position de la ligne 2
line2.penup()
line2.setposition(star_x + entre_line / 2, star_y + entre_line / 2)
line2.pendown()

while True:
    line2.forward(line2_size)
    line2.left(rotation_line)
    line2_size -= entre_line / 2
    if line2_size <= entre_line / 2:
        break

screen.mainloop()
从海龟导入*
screen=screen()
#Paramètre海龟1号线和2号线
第1行=海龟()
第2行=海龟()
#可修改变量的定义
颜色表=[“蓝色”、“红色”]
星x=-160
星y=10
第1行\u尺寸\u x=200
#第1行\u尺寸\u y=200
第3行
旋转线=90
中心线=20
#进口木质素1
第1行。hideturtle()
行1.颜色(颜色表[1])
第1行。养老金(第u行养老金)
#进口木质素2:
第2行。hideturtle()
第2行。养老金(第u行养老金)
第2行。颜色(颜色表[0])
line2_size=line1_size_x-中心线
#直线位置1
第1行
第1行。设置位置(星形x、星形y)
行1.pendown()
#自动变速器
尽管如此:
第1行向前(第1行大小)
第1行。左侧(旋转线)
line1_size_x-=中心线/2

如果line1_size_x您想要这样的东西:您需要什么样的帮助?是什么阻止您在循环中创建线?
from turtle import *

screen = Screen()

# Paramètre Turtle line1 et line2
line1 = Turtle()
line2 = Turtle()

# Définition des variables modifiables
color_table=["blue", "red"]
star_x = -160
star_y = 10
line1_size_x = 200
#line1_size_y = 200
line_pensize = 3
rotation_line = 90
entre_line = 20

# Import de la ligne1
line1.hideturtle()
line1.color(color_table[1])
line1.pensize(line_pensize)

#Import de la ligne 2:
line2.hideturtle()
line2.pensize(line_pensize)
line2.color(color_table[0])
line2_size = line1_size_x - entre_line

# Position de la ligne1
line1.penup()
line1.setposition(star_x, star_y)
line1.pendown()

# Boucle de traçage automatique
while True:
    line1.forward(line1_size_x)
    line1.left(rotation_line)
    line1_size_x -= entre_line / 2
    if line1_size_x <= entre_line / 2:
        break

# Position de la ligne 2
line2.penup()
line2.setposition(star_x + entre_line / 2, star_y + entre_line / 2)
line2.pendown()

while True:
    line2.forward(line2_size)
    line2.left(rotation_line)
    line2_size -= entre_line / 2
    if line2_size <= entre_line / 2:
        break

screen.mainloop()