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 の警告もなくなります!
コメント
コメントを投稿