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

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

使用 Tkinter 在 Python 中重置生成的小部件計(jì)數(shù)

使用 Tkinter 在 Python 中重置生成的小部件計(jì)數(shù)

慕村225694 2021-08-17 17:04:26
使用 Python 3.7 - 在 Pycharm 中工作我目前正在做一個(gè)項(xiàng)目,我不斷地生成新的小部件并刪除它們以顯示不同的東西,我遇到了一個(gè)相當(dāng)煩人的問題,我似乎無法弄清楚,更不用說找到相關(guān)信息了。當(dāng)一排框架中的頂部小部件(框架)被制作 255 次時(shí)它會(huì)崩潰。我想這與它如何以字節(jié)為單位存儲(chǔ)信息有關(guān)。編輯*我意識到我最初的解釋比它需要的要復(fù)雜,所以這里是一個(gè)簡化版本:from tkinter import *list = []for x in range(1):    e = Frame()    list.append(e)print(list) #Prints .!framelist.clear()print(list) #Prints [], the list is now emptyfor x in range(1):    e = Frame()    list.append(e)print(list) #Prints .!frame2, which is one step up from the previous one even the list started emptylist[0].destroy()list[0].forget()print(list) #.!frame2 is still therelist.clear()print(list) #list is now empty againfor x in range(1):    e = Frame()    list.append(e)print(list) #Prints .!frame3, and it still remembers.如您所見,它不斷添加到 .!frame 編號。我正在尋找的是一種防止它到達(dá) .!frame255 的方法
查看完整描述

1 回答

?
翻翻過去那場雪

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

當(dāng)一排框架中的頂部小部件(框架)被制作 255 次時(shí)它會(huì)崩潰。我想這與它如何以字節(jié)為單位存儲(chǔ)信息有關(guān)。


不,這與此無關(guān)。我認(rèn)為您關(guān)于程序在數(shù)字達(dá)到 255時(shí)崩潰的斷言可能是錯(cuò)誤的。很容易創(chuàng)建一個(gè) tkinter 程序,即使這個(gè)數(shù)字達(dá)到數(shù)千,它也能繼續(xù)工作。如果您查看 tkinter 源代碼,您會(huì)發(fā)現(xiàn)它只是一個(gè)附加到字符串的普通整數(shù)。


您似乎誤解了list變量與存儲(chǔ)在其中的小部件之間的關(guān)系。清除列表不會(huì)破壞列表中的小部件。您必須單獨(dú)刪除每一個(gè),或者銷毀它們的父級。在這種情況下,它們的父窗口是根窗口,因此這不是一個(gè)可行的解決方案。


如果要銷毀所有幀,請?jiān)谇宄斜碇笆褂靡粋€(gè)小循環(huán):


for frame in list:

    frame.destroy()

tkinter 分配給小部件的數(shù)字無關(guān)緊要。數(shù)字是多少并不重要,它可能反映也可能不反映實(shí)際存在的小部件數(shù)量。這是一個(gè)不重要的內(nèi)部細(xì)節(jié)。


如果要查看實(shí)際存在多少個(gè)小部件,可以winfo_children在根窗口上調(diào)用。為此,您需要對根窗口的引用。最簡單和最好的方法是在代碼的開頭顯式創(chuàng)建根窗口:


root = Tk()

在腳本結(jié)束時(shí),您可以打印出實(shí)際存在的所有窗口:


print("all windows:", root.winfo_children())

在您的示例代碼中,它正好顯示了兩個(gè)小部件,這是預(yù)期的。您創(chuàng)建一個(gè)小部件,然后創(chuàng)建第二個(gè)小部件,然后刪除第一個(gè)小部件,然后創(chuàng)建第三個(gè)小部件。


查看完整回答
反對 回復(fù) 2021-08-17
  • 1 回答
  • 0 關(guān)注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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