私は電卓に取り組んでいると私はそれをしたいユーザーは、最初の番号を入力することで行われ、オペレータを選択したらそう(+ - * /など)は、二番目の数字を入力することができ、その後、その答えを得るために等しいボタンを押します。tkinterボタンを使用してブール値を更新するにはどうすればよいでしょうか?
現在、私はdef
の中で私のブールに値を割り当てることができません。それは、私が第2の数値を入力して最終的に機能を実行できなくなってしまっています。 commandButtonPress()
の最後の行は、物事がアップスリップしている場所であり、前に私はなっていたwhichNum
list
作りへ:私は直接割り当てなどremove()
を使用して両方を試してみました割り当て
前に参照さ
変数をおよび
append()
。ボタン1〜9は同じコードブロックを使用し、この問題を解決するために必要ではないと考えて小数点を含めなかった。私はこれのどれも洗練されていないと私はクラスを実装する場合は、そのほとんどがはるかに良いだろうけど、私は、新しいものを把握しようとしていますし、まだのpythonでオブジェクト指向プログラミングを行っていません。
from tkinter import * def buttonOne(whichNum): count = 0 number = "" try: if whichNum == False and num1[0] != "0": num1.append("1") while count < len(num1): number = number + str(num1[count]) count += 1 screen["text"] = number elif whichNum == True and num2[0] != "0": num2.append("1") while count < len(num2): number = number + str(num2[count]) count += 1 screen["text"] = number except: if whichNum == False: num1[0] = "." else: num2[0] = "." number = "0." screen["text"] = number def commandButtonPress(symbol, whichNum): if whichNum == False: if len(operator) > 0 and operator[0] == "+": operator.remove("+") if len(num1) > 0: operator.append(symbol) whichNum[0] = True def main(): window = Tk() window.title("Calculator") window.geometry("250x305") num1 = [] num2 = [] operator = [] whichNum = [False] global screen screen = Label(text="0", height = 5, width = 30) screen.pack(side = LEFT, expand=False, anchor = N, padx=[5, 5]) button1 = Button(text="1", command = lambda: buttonOne(whichNum[0])) button1.grid(column=0, row=2) button11 = Button(text="+", command = lambda: commandButtonPress("+", whichNum[0])) button11.grid(column=3, row=2) window.mainloop() main()
[最小限で完全で検証可能な例を作成する](https://stackoverflow.com/help/mcve)ください。それはあなたの質問がはるかに簡単な方法で聞かれることができるように、人々を助けることを躊躇しているからです。 – Nae
すべての関数の外側で 'whichNum = None'を定義し、すべての関数に' globalNum'を最初の行として追加してみてください。 – Nae
私はそれを解析しましたが、私はあまりにも感謝します。 –