私はtkinterで作ったguiを使って計算や方程式を解くプログラムを書こうとしていて、既知の値を入れています。値はtkinterのエントリウィジェットに入力されます(私はStringVar()ではなくIntVar()を使用していますので問題ありません)。何らかの理由で入力した値に関係なく、Python - IntVar/tkinterのエントリは0を返すだけです
def getvalues_1dk():
getvalues2frame = ttk.Frame(calculations_root, width=100, height=100, padding="5")
getvalues2frame['borderwidth'] = 3
getvalues2frame['relief'] = 'raised'
getvalues2label = ttk.Label(getvalues2frame, text="Step 5: Enter a value for each of the variables you\n"
" selected in step 4.")
getvalues2label.grid(row=1, column=1, sticky=(N, W))
getvalues2frame.grid(row=0, column=0, sticky=E)
getvalue1(getvalues2frame)
return getvalues2frame
def getvalue1(getvalues2frame):
if known1d1.get() and known1d2.get() and known1d3.get():
known1d1entryvar = IntVar()
known1d1entry = ttk.Entry(getvalues2frame, textvariable=known1d1entryvar)
ttk.Label(getvalues2frame, text=known1d1.get()).grid(row=2, column=1, sticky=W)
known1d1entry.grid(row=2, column=1, sticky=E)
ttk.Button(getvalues2frame, text="Confirm",
command=(getvalue2(getvalues2frame, known1d1entryvar))).grid(row=3, column=1,
sticky=E)
return known1d1entryvar
def getvalue2(getvalues2frame, known1d1entryvar):
if known1d1entryvar.get():
known1d2entryvar = IntVar()
known1d2entry = ttk.Entry(getvalues2frame, textvariable=known1d2entryvar)
ttk.Label(getvalues2frame, text=known1d2.get()).grid(row=4, column=1, sticky=W)
known1d2entry.grid(row=4, column=1, sticky=E)
ttk.Button(getvalues2frame, text="Confirm",
command=(getvalue3(getvalues2frame, known1d1entryvar, known1d2entryvar))).grid(row=5, column=1,
sticky=E)
return known1d2entryvar
def getvalue3(getvalues2frame, known1d1entryvar, known1d2entryvar):
if known1d2entryvar.get():
known1d3entryvar = IntVar()
known1d3entry = ttk.Entry(getvalues2frame, textvariable=known1d3entryvar)
ttk.Label(getvalues2frame, text=known1d3.get()).grid(row=6, column=1, sticky=W)
known1d3entry.grid(row=6, column=1, sticky=E)
calculatebutton = ttk.Button(getvalues2frame, text="Show formula and calculate",
command=(
calculate1d(known1d1entryvar, known1d2entryvar, known1d3entryvar,
solveforvar1d, unusedvar1d)))
calculatebutton.grid(row=7, column=1, sticky=E)
def calculate1d(known1d1entryvar, known1d2entryvar, known1d3entryvar, solveforvar1d, unusedvar1d):
if known1d1entryvar.get() and known1d2entryvar.get() and known1d3entryvar.get():
knownvar1 = known1d1entryvar.get()
knownvar2 = known1d2entryvar.get()
knownvar3 = known1d3entryvar.get()
print(knownvar1, knownvar2, knownvar3)
solveforvar1d = Symbol(solveforvar1d)
print(solveforvar1d)
print(unusedvar1d)
コードのこのセクションは1になっている)の値が入力される標識されたフレームを作成し、2)の値を確認して作成する最初の知られている変数の整数値の入力ボックスとボタンを作成次の入力ボックス、3)ボタンが押されたときに次の入力ボックスを作成する、4)2番目の値を確認して次の入力ボックスを作成する、5)ボタンが押されたときに3番目の入力ボックスを作成する、ボタンを押してcalculate1d()関数を実行します。これは現在、プログラムが正しい値を返すかどうかを確認するためのプレースホルダです。
ただし、動作しません。最初の値の入力ボックスを作成し、2番目の入力ボックスとボタンを確認して作成するボタンを作成した後で、コードが停止します。このコードでは、入力ボックスに返される値が実際にどのように表示されるかはわかりません。しかし、をgetvalue2()
の先頭に入れて、どの値を入力していても0を返していました。さらに、ボタンを押したときに値0が表示されました。最初の入力ボックスに数字を入力して最初のボタンを押した後で、getvalues_1dk()
関数を呼び出していました。
ここから手伝ってください。私は約2日間このことに固執しています。私は考えることができるすべてを試しました。
編集:必要に応じて、ソースコード全体をペーストウェブサイトに投稿することができます。必要ならば尋ねるだけです。
ソースコード全体を投稿する必要はありません。可能であれば、同じ問題を抱えた小規模の実用的なプログラム例... – VRage
@VRage問題を再現するのに十分な問題が分かっていれば、私はそうするでしょう。しかし、私は試してみる。正直なところ、私はここに迷っています。私は最近、Tkinterの使用方法を学び始めたばかりです。なぜそれがうまくいかないのか、どうやって解決するのかについては完全に迷っています。私が言ったように、私は試みをします。 –
うまくいけば、コード全体を投稿することができます。しかし、実際の例がなければ、デバッグは難しい – VRage