簡體   English   中英

Tkinter窗口無法打開

[英]Tkinter window not opening

我試圖在Python 3中使用tkinter創建一個簡單的移動塊,並且一切正常,直到導入時間。 現在該窗口將不會打開。 我嘗試刪除導入,但沒有幫助。 這是我的代碼:

from tkinter import *
import time

canvas_height = 400
canvas_width = 600
canvas_colour = "grey50"
moveBoolean = "True"

def move():
    global moveBoolean
    while moveBoolean == "True":
        time.sleep(0.005)
        canvas.move(square, 90, 90)
        time.sleep(0.005)
        canvas.move(square, 180, 180)
        time.sleep(0.005)
        canvas.move(square, 50, 100)

window = Tk()

canvas = Canvas(bg=canvas_colour, height=canvas_height, width=canvas_width, highlightthickness=0)
canvas.pack()

square = canvas.create_rectangle(50, 50, 50, 50, width=50, fill="black")

move()

window.mainloop()

這些問題通常可以通過使用類來解決,在編寫GUI恕我直言之前,您應該學習並使用這些類。 您不應該使用time(),因為它會中斷無限的Tkinter循環。 請改用Tkinter的after()。 另外,您永遠不會將moveBoolean設置為False,因此while語句將運行直到程序被取消為止,並且第二次通過該方框將不在畫布上,這就是為什么您看不到任何東西的原因。 以下內容解決了您的問題,但是如果使用類結構,它也會更好。

from tkinter import *
from functools import partial

canvas_height = 400
canvas_width = 600
canvas_colour = "grey50"
moveBoolean = "True"

def move_it(ctr=0):
    if ctr < len(coords):
        x, y = coords[ctr]
        ctr += 1
        print ctr, x, y
        canvas.move(square, x, y)
        window.after(1000, partial(move_it, ctr))

window = Tk()

canvas = Canvas(bg=canvas_colour, height=canvas_height,
         width=canvas_width, highlightthickness=0)
canvas.pack()

square = canvas.create_rectangle(50, 50, 50, 50, width=50, fill="black")

coords = ((90, 90),
          (180, 180),
          (50, 50))
move_it()

window.mainloop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM