日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

关于pygame和tkinter窗口的那件事-线程

發布時間:2024/2/28 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于pygame和tkinter窗口的那件事-线程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pygame與tkinter關于窗口的問題

pygame和tkinter實際上都是一個可視化界面,在第一層父窗口上幾乎沒有區別,tkinter使用Tk()+mainloop()+按鍵對象+放置 而pygame使用set_mode+update+按鍵對象+按鍵對象屬性設置(一般是位置),但是關于使用子窗口是有明顯區別的。
tkinter創建子窗口時如果只是顯示,不對窗口操作(點擊按鈕,輸入等),則直接使用Tk()創建窗口即可。如一些數據展示窗口。但是如果需要對子窗口進行操作eg:數據寫入,按鈕+響應等等,就需要使用到頂層子窗口Toplevel()。

從線程角度說明他們的不同點

tkinter使用單線程,如果只是開啟窗口顯示,不涉及對主線程的內容修改,則可以開啟多個這樣的子窗口(嚴格上說這不是真正意義的子窗口,因為與主窗口沒有進行數據關聯,因為是各干各的只是借助主窗口的函數調用創建該窗口,算是一個額外的線程)。但是如果需要子窗口對主線程中的數據(也可能是我們導入的數據)進行修改,就需要用到Toplevel(相當于一個額外的線程+主線程中的內部類),它可以修改主線程中的內部數據,傳遞參數等等。
概括:使用tkinter做圖形窗口時,如果窗口涉及操作直接使用toplevel()。其他只需可視化的情況使用Tk()直接創建新窗口也是可行的。
實例說明:
在做一個計算器的擴展功能-貸款計算時,遇到了這個問題。
問題描述:
在貸款計算之前,添加了一個純展示的子窗口(tk實現)功能,打開后父窗口可以正常運行。然后使用了同樣的方法做了貸款窗口,因為過程中涉及到了窗口的輸入,對主線程中的數據進行了修改,雖然父窗口正常運行)但是子窗口報錯了。
解決:
將貸款的實現窗口修改為tk.toplevel()

pygame也是單線程的,但是其沒有類似tkinter中的toplevel,不能創建同時運行的兩個窗口。創建子窗口(如:tkinter窗口)時pygame會暫停了父窗口任務,將資源給了給剛創建的子窗口,在子窗口返還資源之前(關閉之前),父窗口會一直處于未響應狀態(等待返還主線程的資源)。
實例說明:
在做拼圖游戲的原圖顯示功能時,發現了該問題。當顯示原圖(子窗口)時,主窗口處于未響應狀態,關閉子窗口后,主窗口正常響應。
建議:
盡量不要使用在pygame上建立多個窗口,因為他只能同時運行單個線程,創建很多的窗口也只能實現窗口并發操作,不能實現并行

總結

以上是生活随笔為你收集整理的关于pygame和tkinter窗口的那件事-线程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。