簡體   English   中英

wxPython —畫一條線,相對較慢

[英]wxPython — drawing a line, relatively slowly

我想繪制一條線,但不是立即繪制,因為它通常與DrawLine()一起出現。 我希望它快一些,但要慢到足以讓您知道它正在繪制。

我已經嘗試過測試for循環,該循環一次以0.05秒的睡眠時間繪制一條像素線,但是直到for循環結束時它似乎都沒有繪制任何內容,它似乎沒有繪制任何線條。 我認為這與不能通過主循環獲取繪圖動作有關,因此我在繪圖線上使用了CallAfter,這也不起作用。

似乎應該有一種方法可以簡單地告訴畫線在x秒的時間內進行繪制,或通過動畫對象(可以在其中指定幀數等)將其發送出去。不確定要在哪里看。 有什么建議么?

問題是time.sleep(...)還將阻止GUI作為for循環本身。 wx.Yield通常應發出信號“ GUI,我已停止了耗時的過程,現在就做您想做的任何事情”。 但是根據經驗,這基本上是行不通的(我還不知道為什么)。

因此,可以使用wx.CallLater鏈接到wxPython Phoenix docs代替sleep ,它類似於wx.CallAfter ,但是可以指定延遲。 通過在內部for循環繪制的末尾調用它,線條部分的繪制事件不應堆積。

您可能需要繪制一系列線條。 那可能是最簡單的。 我可能會使用wx.Timer。 它在自己的主循環中運行。 您可以將計時器設置為每隔0.5秒觸發一次。 觸發時,它可以調用您的draw方法,該方法將繪制下一行。 您可以在此處閱讀有關計時器的更多信息:

暫無
暫無

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

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