第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Python如何在不干擾主代碼循環(huán)的情況下使用Tkinter GUI

Python如何在不干擾主代碼循環(huán)的情況下使用Tkinter GUI

慕慕森 2023-06-27 13:46:12
我想為我的項(xiàng)目實(shí)現(xiàn)一個(gè)非常簡(jiǎn)單的 GUI。我以前只使用 Print 語(yǔ)句來(lái)輸出一些文本和數(shù)據(jù)。然而,這不是很方便,因?yàn)橐粋€(gè)人需要操作我正在編碼的設(shè)備,所以他需要清楚地看到我將在 GUI 上顯示的指令。我的代碼:main()myConnection = mysql.connector.connect( host=hostname, user=username, passwd=password, db=database )counter = 0window = tk.Tk()window.title("GUI")window.geometry("400x200")while(1):    # OPERACIJOS KODAI:    # 0 - PILDYMAS    # 1 - KOMPLEKTAVIMAS    # 2 - NETINKAMAS KODAS    tk.Label(window,text = "Scan barcode here:").pack()    entry = tk.Entry(window)    entry.pack()    var = tk.IntVar()    button = tk.Button(window,text="Continue",command = lambda: var.set(1))    button.pack()    print("waiting...")    button.wait_variable(var)    result = entry.get()    print("Entry string=",result)    var.set(0)        operacijos_kodas=Scanning_operation(myConnection,result)    print("operacijos kodas=",operacijos_kodas)    if(operacijos_kodas == 0):        tk.label(window,text = "PILDYMO OPERACIJA:").pack()        pildymo_operacija(myConnection)               elif(operacijos_kodas == 1):        tk.Label(window,text = "PAKAVIMO OPERACIJA:").pack()        insertData_komplektacija(myConnection,"fmb110bbv801.csv");        update_current_operation(myConnection);        picking_operation();            elif(operacijos_kodas == 2):        print("Skenuokite dar karta")        #break   window.mainloop();沒(méi)有顯示任何內(nèi)容。它只是打開(kāi)一個(gè)空的 GUI 窗口。首先,我不確定應(yīng)該在哪里調(diào)用 function window.mainloop()。其次,由于我的系統(tǒng)在無(wú)限的 while 循環(huán)中運(yùn)行(當(dāng)用戶(hù)掃描條形碼時(shí)操作開(kāi)始,然后他完成操作并且 while 循環(huán)再次開(kāi)始(等待用戶(hù)掃描條形碼)。所以我只需要顯示一些文本并允許用戶(hù)在文本框中輸入數(shù)據(jù)。有人可以建議我這個(gè) GUI 是否適合我的需求,或者我應(yīng)該尋找替代品嗎?
查看完整描述

1 回答

?
陪伴而非守候

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊

您需要調(diào)整代碼以與 GUI 配合使用。您無(wú)法在 tkinter GUI 中引入無(wú)限循環(huán)而不引起各種問(wèn)題。


Mainloop 應(yīng)該只被調(diào)用一次。


我建議您將所有掃描/保存操作移至一個(gè)單獨(dú)的函數(shù)中,您計(jì)劃使用 tkinterafter方法定期執(zhí)行該函數(shù)。


例如,如果您調(diào)用函數(shù),scan您可以使用以下命令將其安排在 1 秒后發(fā)生


root.after(1000, scan)

更高級(jí)的方法是讓掃描代碼在單獨(dú)的線(xiàn)程上運(yùn)行。


此外,您當(dāng)前嘗試在每次循環(huán) while 循環(huán)時(shí)創(chuàng)建標(biāo)簽,而不是僅創(chuàng)建和打包它們一次并在執(zhí)行“掃描”時(shí)更新標(biāo)簽的文本。您可以使用 config 方法更新標(biāo)簽的文本,例如


## Create a label

label1 = tk.Label(window,text = "PAKAVIMO OPERACIJA:")

##Pack the label

label1.pack()


## Update the text later

label1.config(text="New Text")

以下是從函數(shù)定期更新 tkinter 小部件的示例。


import tkinter as tk

import random


def scanning():

    num = random.randint(0,100)

    entryTemperature.delete(0, tk.END) #Delete the current contents

    entryTemperature.insert(0, f"{num} K") #Add new text

    root.after(1000, scanning) #Schedule the function to run again in 1000ms (1 second)



root = tk.Tk()

entryTemperature = tk.Entry(root)

entryTemperature.grid(padx=50,pady=50)


root.after(1000, scanning)

root.mainloop()

    


查看完整回答
反對(duì) 回復(fù) 2023-06-27
  • 1 回答
  • 0 關(guān)注
  • 182 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)