tkinter 캔버스 드로잉이 파이썬에 표시되지 않는 솔루션

tkinter 캔버스 드로잉이 파이썬에 표시되지 않는 솔루션

1. 다음은 실패한 그리기 코드입니다.

from tkinter import *
import math

WIDTH, HEIGHT = 510, 210
ORIGIN_X, ORIGIN_Y = 2, HEIGHT/2 #原点

SCALE_X, SCALE_Y = 40, 100 #x轴、y轴缩放倍数
ox, oy = 0, 0
x, y = 0, 0
arc = 0 #弧度
END_ARC = 360 * 2 #函数图形画两个周期

root = Tk()
c = Canvas(root, bg = 'white', width = WIDTH, height = HEIGHT)
c.pack()

c.create_text(200, 20, text = 'y = cos(x)')
c.create_line(0, ORIGIN_Y, WIDTH, ORIGIN_Y)
c.create_line(ORIGIN_X, 0, ORIGIN_X, HEIGHT)
for i in range(0, END_ARC+1, 10):
    arc = math.pi * i / 180
    x = ORIGIN_X + arc * SCALE_X
    y = ORIGIN_Y - math.cos(arc) * SCALE_Y
    c.create_line(ox, oy, x, y)
    ox, oy = x, y

직접 실행은 0을 반환하고 그림이 표시되지 않습니다.
여기에 사진 설명 삽입

2. 솔루션

하단에 코드 줄을 추가합니다.

root.mainloop()

전체 코드는 다음과 같습니다.

from tkinter import *
import math

WIDTH, HEIGHT = 510, 210
ORIGIN_X, ORIGIN_Y = 2, HEIGHT/2 #原点

SCALE_X, SCALE_Y = 40, 100 #x轴、y轴缩放倍数
ox, oy = 0, 0
x, y = 0, 0
arc = 0 #弧度
END_ARC = 360 * 2 #函数图形画两个周期

root = Tk()
c = Canvas(root, bg = 'white', width = WIDTH, height = HEIGHT)
c.pack()

c.create_text(200, 20, text = 'y = cos(x)')
c.create_line(0, ORIGIN_Y, WIDTH, ORIGIN_Y)
c.create_line(ORIGIN_X, 0, ORIGIN_X, HEIGHT)
for i in range(0, END_ARC+1, 10):
    arc = math.pi * i / 180
    x = ORIGIN_X + arc * SCALE_X
    y = ORIGIN_Y - math.cos(arc) * SCALE_Y
    c.create_line(ox, oy, x, y)
    ox, oy = x, y

root.mainloop()

그런 다음 그림을 그릴 수 있습니다
여기에 사진 설명 삽입

3. 이유

root와 root.pack () 사이에는 디자인 된 구성 요소의 유형, 크기, 스타일 및 위치가 있으며 이벤트를 바인딩합니다. 메인 루프는 이벤트 (메시지) 루프에 들어갑니다. 이벤트가 감지되면 구성 요소가 새로 고쳐집니다. 그것은 온라인 진술입니다. 내가 이해하는 것은 메인 루프가 없으면 그리기도하지만 그리기가 완료된 후 프로그램이 닫히기 때문에 디스플레이가없는 것처럼 보입니다. 메인 루프를 추가하면 프로그램을 종료합니다. 더 나은 답변을 아는 사람이 있으면 댓글란에 메시지를 남겨주세요.

추천

출처blog.csdn.net/weixin_43520670/article/details/111192321