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

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

Tkinter TypeError:“StringVar”類型的參數(shù)不可迭代

Tkinter TypeError:“StringVar”類型的參數(shù)不可迭代

我正在嘗試使用 Tkinter 編寫(xiě)一個(gè)模擬 Hangman 游戲的 GUI。到目前為止,我已經(jīng)讓 GUI 創(chuàng)建了一個(gè)標(biāo)簽,該標(biāo)簽根據(jù)用戶正確猜測(cè)的字母進(jìn)行更新,但終端仍然給出錯(cuò)誤:“TypeError:‘StringVar’類型的參數(shù)不可迭代”。我已經(jīng)查看了此錯(cuò)誤的其他解決方案,但無(wú)法弄清楚如何解決該問(wèn)題。它還沒(méi)有完成 - 但到目前為止的代碼如下:import randomword# from PyDictionary import PyDictionaryfrom tkinter import *root = Tk()playerWord: str = randomword.get_random_word()word_guess: str = ''guesses = ''def returnEntry(arg=None):    global word_guess    global guesses    global wordLabel    word_guess = ''    # dictionary = PyDictionary()    failed = 0    incorrect = 10    result = myEntry.get()    while incorrect > 0:        if not result.isalpha():            resultLabel.config(text="that's not a letter")        elif len(result) != 1:            resultLabel.config(text="that's not a letter")        else:            resultLabel.config(text=result)            assert isinstance(END, object)            myEntry.delete(0, END)        guesses += result        for char in playerWord:            if char in guesses:                # Print the letter they guessed                word_guess += char            elif char not in guesses:                # Print "_" for every letter they haven't guessed                word_guess += "_ "                failed += 1        if guesses[len(guesses) - 1] not in playerWord:            resultLabel.config(text="wrong")            incorrect -= 1        wordLabel = Label(root, updateLabel(word_guess))        myEntry.delete(0, END)resultLabel = Label(root, text="")resultLabel.pack(fill=X)myEntry = Entry(root, width=20)myEntry.focus()myEntry.bind("<Return>", returnEntry)myEntry.pack()text = StringVar()text.set("your word is: " + ("_ " * len(playerWord)))wordLabel = Label(root, textvariable=text)wordLabel.pack()def updateLabel(word):    text.set("your word is: " + word)    return textmainloop()當(dāng)我在 wordLabel 上運(yùn)行該函數(shù)時(shí)出現(xiàn)問(wèn)題:“wordLabel = Label(root, updateLabel(word_guess))”來(lái)重置標(biāo)簽。關(guān)于如何在 while 循環(huán)迭代后將標(biāo)簽更新為 word_guess 有什么建議嗎?
查看完整描述

2 回答

?
函數(shù)式編程

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

此行導(dǎo)致錯(cuò)誤:

wordLabel = Label(root, updateLabel(word_guess))

你想多了。應(yīng)該很簡(jiǎn)單:

updateLabel(word_guess)

你那里還有另一個(gè)重大錯(cuò)誤。這行:

while incorrect > 0:

會(huì)導(dǎo)致你的程序鎖定。您需要將其更改為:

if incorrect > 0:


查看完整回答
反對(duì) 回復(fù) 2023-10-18
?
肥皂起泡泡

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

wordLabel = Label(root, updateLabel(word_guess))

您嘗試創(chuàng)建一個(gè)新標(biāo)簽Label并使全局wordLabel引用新標(biāo)簽而不是舊標(biāo)簽。即使它工作正常,這也不會(huì)更新你的 GUI,因?yàn)樾聵?biāo)簽沒(méi)有打包。

它中斷的原因是,雖然更改了namedupdateLabel的內(nèi)容并將其返回,但它并沒(méi)有被用作新標(biāo)簽的。除了指定父窗口小部件之外,您還應(yīng)該僅對(duì)構(gòu)造函數(shù)使用關(guān)鍵字參數(shù),否則該參數(shù)的解釋可能與您期望的不同。(坦率地說(shuō),我很驚訝你竟然能以這種方式調(diào)用該函數(shù);我本來(lái)期望在調(diào)用時(shí)出現(xiàn) a 。)StringVartexttextvariableTypeError

無(wú)論如何,您所需要做的就是直接將其添加到新文本中text,因?yàn)樗彩侨值摹?code>.set這將自動(dòng)更新外觀wordLabel(通常刷新顯示所需的任何 tkinter 內(nèi)容的模數(shù)) - 這就是StringVar 容器類的要點(diǎn)(而不是僅使用純字符串)。


查看完整回答
反對(duì) 回復(fù) 2023-10-18
  • 2 回答
  • 0 關(guān)注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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