これはtkinterの仕様です。
なのでListboxクラスをインスタンス化させる際のコンストラクタではstringvarを使わなければいけません。
それが嫌ならinsertメソッドを使う、あるいはconfigureを使う方法があります。
configureはできたか忘れました。
なぜコンストラクタでこのようなPythonの組み込み型がつかえない理由
IT特有の抽象化を意識したあまり使い勝手が悪くなっている典型的な例だと私は思っています
日本語のtkinterのリファレンスによると
ウィジェットによっては、(テキスト入力ウィジェットのように) 特殊なオプションを使って、現在設定されている値をアプリケーション内の変数に直接関連付けできます。このようなオプションには variable, textvariable, onvalue, offvalue および value があります。この関連付けは双方向に働きます: 変数の値が何らかの理由で変更されると、関連付けされているウィジェットも更新され、新しい値を反映します。
残念ながら、現在の tkinter の実装では、variable や textvariable オプションでは任意の Python の値をウィジェットに渡せません。この関連付け機能がうまく働くのは、tkinter 内で Variable というクラスからサブクラス化されている変数によるオプションだけです。
Variable には、 StringVar, IntVar, DoubleVar, BooleanVar といった便利なサブクラスがすでにすでに数多く定義されています。こうした変数の現在の値を読み出したければ、 get() メソッドを呼び出します。また、値を変更したければ set() メソッドを呼び出します。このプロトコルに従っている限り、それ以上なにも手を加えなくてもウィジェットは常に現在値に追従します。
らしいです。
また英語のリファレンスListboxの項目によると
listvariable
A StringVar that is connected to the complete list of values in the listbox (see Section 52, “Control variables: the values behind the widgets”.
If you call the .get() method of the listvariable, you will get back a string of the form "('v0', 'v1', ...)", where each vi is the contents of one line of the listbox.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。