Tkinterウィンドウでラベルを動的に追加/削除/更新するにはどうすればよいですか?

Ilan.b

ウィンドウ内のラベルを動的に追加/削除/更新するスクリプトを作成しました私が抱えている唯一の問題は、古いフレームのラベルが消えないことです。この問題により、ウィンドウのbgでラベルが乱れ、もちろん、何らかのメモリリークが発生します(適切な用語かどうかはわかりません)。ここに..)。

これは私のコードです:

import tkinter as tk
from tkinter.ttk import *
from subprocess import call,Popen,PIPE, STDOUT

class App():
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("devices networks")
        self.update_clock()
        self.root.mainloop()

    def update_clock(self):
        i=0
        adb_absolute_path = "C:\\Users\\ilan.MAXTECH\\AppData\\Local\\Android\\Sdk\\Platform-tools\\"

        # Get the list of connected devices
        cmd = adb_absolute_path+"adb.exe devices"
        proc = Popen(cmd, shell=True, stdout=PIPE, stderr=STDOUT)
        device_list = proc.communicate()[0].decode().split("\r\n")
        # remove unnecessary text in devices call
        device_list.pop(0)
        device_list.remove("")
        device_list.remove("")


#### not working.... #######
#        #erase the old labels ( in case a device has been disconected
#        for line in range(10):
#            lb = Label(self.root, text="")
#            lb.grid(row=1, column=line)
###########################

        #print netcfg for each device
        for device in device_list:

            #get the netcfg for specific device
            device_serial = device.split("\t")[0]
            cmd = adb_absolute_path + "adb.exe -s " + device_serial + " shell netcfg"
            proc = Popen(cmd, shell=True, stdout=PIPE, stderr=STDOUT)
            netcfg_output = proc.communicate()[0].decode()

            #add a new label to the screen
            lb = Label(self.root, text=device_serial+"\n"+netcfg_output)
            lb.grid(row=1, column=i)
            lbblank = Label(self.root,text="\t\t")
            lbblank.grid(row=1, column=i+1)
            i += 2

        self.root.geometry(str(device_list.__len__()*450)+"x700")
        self.root.after(1000, self.update_clock)

app=App()

ここにいくつかのスクリーンショットがあります:

3つのデバイスが接続され、3つのラベルが表示されます。

3つのデバイスが接続され、3つのラベルが表示されます

2つのデバイスが接続され、2つのラベルが表示されます。

2つのデバイスが接続され、2つのラベルが表示されます

新しいラベルは古いラベルの上にあります:

new labels are on top an old ones

R4PH43L

使用するgrid()レイアウト・メカニズムとして、あなたは使用することができgrid_removeたりgrid_forget、あなたのラベルを削除します。それらを完全に削除したい場合destroy()は、ウィジェット自体で使用してください

より動的な動作を使用することをお勧めします。あなたは使用することができますtk.StringVar()- (>その場合には、それのリストをdevice_listあなたのデータを格納するために) -と使用

lb=tk.Label(self.root, textvariable=device_list[-1])

データを表示します。これを使用すると、ラベルの数が制限され、データフィールドごとに新しいラベルが作成されるわけではありません。

ラベルをリストに保存して削除するか、ラベルをコンテナ(例tk.Frame())に入れて、新しいデータを読み取るときにこのコンテナを再構築することを検討してください

ウィジェットの削除に関するアドバイスについては、この質問も参照してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

OOPを使用して別のウィンドウtkinterにラベルを追加するにはどうすればよいですか

分類Dev

Python Tkinterルートウィンドウを削除するにはどうすればよいですか?

分類Dev

TKinter:子ウィンドウのウィンドウアイコンを設定するにはどうすればよいですか(トップレベル)

分類Dev

tkinterのキャンバスにラベルウィジェットを追加するにはどうすればよいですか?

分類Dev

Swiftでラベルにアウトラインを追加するにはどうすればよいですか?

分類Dev

Tkinterウィンドウを他のウィンドウの前に移動するにはどうすればよいですか?

分類Dev

Unity でウィンドウ シャドウを削除するにはどうすればよいですか?

分類Dev

Tkinter、Python:エントリウィジェットに入力されたテキストを保存するにはどうすればよいですか?ラベルを移動するにはどうすればよいですか?

分類Dev

NCursesにウィンドウパディングを追加するにはどうすればよいですか?

分類Dev

Tkinterでウィンドウとトップレベルを並べて配置するにはどうすればよいですか?

分類Dev

トップレベルウィンドウからメインウィンドウに変数を取得するにはどうすればよいですか?

分類Dev

ライブ(インタラクティブ)コンソールウィンドウをAtomに追加するにはどうすればよいですか?

分類Dev

Intellij IDEAのツールウィンドウバーからツールウィンドウを削除するにはどうすればよいですか?

分類Dev

Odooでウィンドウアクションを削除するにはどうすればよいですか?

分類Dev

Atom edtorで「ウィンドウ移動」イベントをサブスクライブするにはどうすればよいですか?

分類Dev

Python TkinterでTopLevelウィンドウのみを閉じるにはどうすればよいですか?

分類Dev

ウィンドウサイズに対するラベル、行編集などの位置を変更するにはどうすればよいですか?

分類Dev

Tkinterウィンドウが開く場所を指定するにはどうすればよいですか?

分類Dev

Tkinterウィンドウが開く場所を指定するにはどうすればよいですか?

分類Dev

プログラムでウィンドウからコントロールを削除するにはどうすればよいですか?

分類Dev

プログラムでウィンドウからコントロールを削除するにはどうすればよいですか?

分類Dev

ウィンドウがwpfで拡大されたときに、(不明な数の)ラベルを拡大するにはどうすればよいですか?

分類Dev

Pebble.jsのウィンドウに画像を追加するにはどうすればよいですか?

分類Dev

2番目のウィンドウでjFrameを更新するにはどうすればよいですか?

分類Dev

Python tkinterで子ウィンドウから親ウィンドウに値を表示するにはどうすればよいですか?

分類Dev

別のウィンドウからスタックパネルにラジオボタンを追加するにはどうすればよいですか?

分類Dev

IRSSIでウィンドウ間を移動するにはどうすればよいですか?

分類Dev

指定されたウィンドウサイズとURLでWebブラウザを自動的に起動するにはどうすればよいですか?

分類Dev

指定されたウィンドウサイズとURLでWebブラウザを自動的に起動するにはどうすればよいですか?

Related 関連記事

  1. 1

    OOPを使用して別のウィンドウtkinterにラベルを追加するにはどうすればよいですか

  2. 2

    Python Tkinterルートウィンドウを削除するにはどうすればよいですか?

  3. 3

    TKinter:子ウィンドウのウィンドウアイコンを設定するにはどうすればよいですか(トップレベル)

  4. 4

    tkinterのキャンバスにラベルウィジェットを追加するにはどうすればよいですか?

  5. 5

    Swiftでラベルにアウトラインを追加するにはどうすればよいですか?

  6. 6

    Tkinterウィンドウを他のウィンドウの前に移動するにはどうすればよいですか?

  7. 7

    Unity でウィンドウ シャドウを削除するにはどうすればよいですか?

  8. 8

    Tkinter、Python:エントリウィジェットに入力されたテキストを保存するにはどうすればよいですか?ラベルを移動するにはどうすればよいですか?

  9. 9

    NCursesにウィンドウパディングを追加するにはどうすればよいですか?

  10. 10

    Tkinterでウィンドウとトップレベルを並べて配置するにはどうすればよいですか?

  11. 11

    トップレベルウィンドウからメインウィンドウに変数を取得するにはどうすればよいですか?

  12. 12

    ライブ(インタラクティブ)コンソールウィンドウをAtomに追加するにはどうすればよいですか?

  13. 13

    Intellij IDEAのツールウィンドウバーからツールウィンドウを削除するにはどうすればよいですか?

  14. 14

    Odooでウィンドウアクションを削除するにはどうすればよいですか?

  15. 15

    Atom edtorで「ウィンドウ移動」イベントをサブスクライブするにはどうすればよいですか?

  16. 16

    Python TkinterでTopLevelウィンドウのみを閉じるにはどうすればよいですか?

  17. 17

    ウィンドウサイズに対するラベル、行編集などの位置を変更するにはどうすればよいですか?

  18. 18

    Tkinterウィンドウが開く場所を指定するにはどうすればよいですか?

  19. 19

    Tkinterウィンドウが開く場所を指定するにはどうすればよいですか?

  20. 20

    プログラムでウィンドウからコントロールを削除するにはどうすればよいですか?

  21. 21

    プログラムでウィンドウからコントロールを削除するにはどうすればよいですか?

  22. 22

    ウィンドウがwpfで拡大されたときに、(不明な数の)ラベルを拡大するにはどうすればよいですか?

  23. 23

    Pebble.jsのウィンドウに画像を追加するにはどうすればよいですか?

  24. 24

    2番目のウィンドウでjFrameを更新するにはどうすればよいですか?

  25. 25

    Python tkinterで子ウィンドウから親ウィンドウに値を表示するにはどうすればよいですか?

  26. 26

    別のウィンドウからスタックパネルにラジオボタンを追加するにはどうすればよいですか?

  27. 27

    IRSSIでウィンドウ間を移動するにはどうすればよいですか?

  28. 28

    指定されたウィンドウサイズとURLでWebブラウザを自動的に起動するにはどうすればよいですか?

  29. 29

    指定されたウィンドウサイズとURLでWebブラウザを自動的に起動するにはどうすればよいですか?

ホットタグ

アーカイブ