[英]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.