我在tkinter中創建了一個遊戲,爲了避免我在上一次遊戲中遇到的滯後問題,我想分開邏輯和圖形循環,因爲圖形更多CPU密集。爲了創建兩個循環,我使用了.after循環,因爲在過去我已經成功地將它們用作控制循環。我給了邏輯循環10毫秒的延遲時間,圖形延遲時間爲30毫秒。爲了測試循環,我在每個循環中都放了一個打印語句,但是每次圖形循環觸發時都不會看到邏輯循環觸發3次,而是以一對一的比率觸發。Tkinter。相對時間不正常工作
這裏是我的代碼(很抱歉的多個文檔:
from tkinter import *
import random
import math
from AppClass import App
root = Tk()
root.title('Test')
root.resizable(0, 0)
app = App(root)
root.mainloop()
Appclass:
from tkinter import *
import random
import math
class App:
def __init__ (self, _window):
self.window = _window
#################################
self.logicClock = 10
self.graphicClock = 30
#################################
print(0)
self.createCanvas()
self.createBindings()
self.logicStep()
self.graphicStep()
def createCanvas (self):
self.canvas = Canvas(self.window,
bg = "#ff7f00",
width = 1280,
height = 750
)
self.canvas.pack()
self.canvas.focus_set()
def createBindings (self):
pass
def logicStep (self):
self.canvas.after(self.logicClock, self.logicStep)
print(1)
def graphicStep (self):
self.canvas.after(self.graphicClock, self.graphicStep)
print(2)
而且結果(運行第一程序時(注:他們是在同一個目錄中,有正確的文件名)):
0
1
2
1
2
1
2
etc.
你能幫我嗎?
你在窗戶上嗎?我不認爲窗口上的時鐘足夠精確(在軟件層面)來區分10到30毫秒。 –