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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序图形化界面刷新以及如何从tkinter窗口中正确读出数据

發布時間:2024/2/28 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序图形化界面刷新以及如何从tkinter窗口中正确读出数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.問題提出
在做圖形化編程時經常遇到界面刷新函數,如python tkinter中的mainloop,java線程new和remove并用等等。但是想要使用圖形化界面的數據(輸入的文本數據或其他)時卻出現了無法將其讀出/使用的問題。
2.問題解決
以python tkinter包中的mainloop圖形界面刷新函數為例,如果我們將使用圖形界面數據的操作放在刷新函數之前,那么只能得到原數據,不會得到圖形界面的任何輸入數據。
eg:

str="" win=tk.Tk() tk.Button(.....).place(..) entry=tk.Entry(.....).place(..) str=entry.get() win.mainloop()

最后str得到結果仍然是“”,因為圖形界面是在使用mainloop時才出現的,也就是前面的操作執行結束之后才會出現圖形界面供我們進行操作,所以str讀取到的只能是未出現圖形界面時的文本輸入框的初始數據-空值。
想要使用圖形化界面的數據1.直接在對應的事件處理函數中使用(該函數是在圖形界面之后,通過我們點擊或按鍵觸發,所以從邏輯和實際執行上都是可行的)。
eg:

str="" win=tk.Tk() entry=tk.Entry(.....).place(..) def solve():str=entry.get()print(str)....#對str的操作 tk.Button(....,command=solve).place(..) win.mainloop()

2.通過全局變量將數據傳出,注意全局變量是在所有函數之外的變量。
易錯:

def start():str=""win=tk.Tk()entry=tk.Entry(.....).place(..)def solve():str=entry.get()tk.Button(....,command=solve).place(..)win.mainloop() print(str)

上述情況中的str并非全局變量,這樣是不能將數據傳出的,所以最后str的輸出仍然為“”
正確使用:

str=“”#注意位置 def start():win=tk.Tk()entry=tk.Entry(.....).place(..)def solve():global strstr=entry.get()tk.Button(....,command=solve).place(..)win.mainloop()print(str)

此時得到的str將是最后一次點擊Button觸發函數時Entry輸入框的值
補充說明mainloop:
mainloop是圖形界面的刷新操作,直到我們將界面刪除,它才會結束。所以也只有我們X掉界面才能進行下一步操作

總結

以上是生活随笔為你收集整理的程序图形化界面刷新以及如何从tkinter窗口中正确读出数据的全部內容,希望文章能夠幫你解決所遇到的問題。

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