python_tkinter_StringVar()_traceメソッド_非推奨_deprecated

 

import tkinter as tk

self.barcode_var = tk.StringVar()

self.barcode_var.trace("w", self.on_text_change)


上記のpythonのコードを vscodeにコピペすると、


pylanceから tkinterの StrinbVarのメソッド

traceが非推奨になっていると表示されました。


かわりに、trace_addを使うようにも表示されたのですが、

引数はどのようになっているのでしょうか?



`trace()` は非推奨になり、

代わりに `trace_add()` を使用するようになりました。


### `trace_add()` の基本構文

```python

variable.trace_add(mode, callback)

```


### 引数


- `mode`: 文字列で指定する。以下の 3 つのいずれかを使用


  - `"read"` (`"r"`) : 変数が読み取られたとき

  - `"write"` (`"w"`) : 変数が変更されたとき

  - `"unset"` (`"u"`) : 変数が削除されたとき

  

- `callback`: コールバック関数(変更時に実行される関数)



### 修正後のコード


```python


import tkinter as tk


class App:

    def __init__(self, root):

        self.root = root

        self.barcode_var

= tk.StringVar()

        self.barcode_var.trace_add(

"write", self.on_text_change)


    def on_text_change(self, *args):

        print("Text changed:", self.barcode_var.get())


root = tk.Tk()

app = App(root)

root.mainloop()

```


### 変更点


- `trace("w", self.on_text_change)`

→ `trace_add("write", self.on_text_change)`


- `trace()` では 

`(name, index, mode)` の 3 つの引数が渡されたが、

`trace_add()` では `*args` で受け取る


- `trace_add()` では `callback` の引数として

`(name, index, mode)` が渡されるが、

通常は `*args` にして無視しても問題ない


これで Pylance の警告もなくなります!


コメント