簡體   English   中英

Tkinter 按鈕在 function 執行期間保持按下狀態

[英]Tkinter Button stays pressed during function execution

我正在使用 Tkinter 庫在 Python 中編寫一個家庭控制程序。 有一個按鈕可以啟動位於另一個腳本中的 function(我在開頭包含了它)。

該按鈕工作正常,但在執行我的 function 期間它仍然被按下,這需要一些時間來執行......我會放置一個“等待屏幕”,而不是僅僅按下按鈕並且程序沒有響應。 我加入了我的代碼的摘錄。

我到處搜索,但沒有找到明確的解決方案。

希望你能幫我 !

主腳本:

import backend
from tkinter import *

window = Tk()
frameMain  = Frame(window)
buttonConnection = Button(frameMain, text="Connect devices", command=backend.configDevices)
frameMain.pack()

backend.py 腳本:

pathConfip = 'assets/confip.txt'
...
def configDevices():
    with open(pathConfip, 'r', encoding='utf-8') as fileConfip:
        # ips are in a text file, separated by "###" each time
        ip = fileConfip.read().split('###')
    global bulb1, bulb2, bulb3, stripeBulb, lgtv, cast
    bulb1 = Bulb(ip[0])
    bulb2 = Bulb(ip[1])
    bulb3 = Bulb(ip[2])
    stripeBulb = Bulb(ip[3])
    lgtv = WebOsClient(ip[4])
    cast = Chromecast(ip[5])

正如 Bryan 在評論中所說,處理此問題的最佳方法是使用線程。 也許最簡單的方法(無需過多了解)是通過命令運行另一個 python 腳本。

import os
os.system("python file.py &")

請注意,這將適用於 Linux。 要在 windows 的后台運行命令,您需要使用pythonw.exe而不是python.exe (參見此處)。 Pythonw 也可以在 Linux 上工作。

最后一件事,如何知道命令何時結束? 同樣,最簡單(但也很丑陋)的方法是修改位於同一文件夾中的文件(json 或 txt)。 然后,每隔一秒左右,tkinter 應用程序就可以查看文件,如果它發生了變化,它就會知道何時停止顯示加載屏幕。

暫無
暫無

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

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