tkinterボタンを使用してブール値を更新する最良の方法は何でしょうか?

マイケルノット

私は電卓に取り組んでおり、ユーザーが最初の数値の入力を完了して演算子(+-* /など)を選択したら、2番目の数値を入力し、等しいボタンを押して答えを取得できるようにしたいと考えています。

現在、defs内のboolに値を割り当てることができないため、2番目の数値を入力して、最終的に関数を実行することができません。最後の行は、commandButtonPress()物事がアップ滑り、そして作る前にしているところである私がなっていました。whichNumlist

割り当て前に参照される変数

直接割り当てremove()とandの使用の両方を試しました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()
マイケルノット

Naeが投稿したソリューションは機能しているようです。私のボタンはまだnum2を適切に処理していませんが、commandButtonPressで必要なようにwhichNumが更新されています。助けてくれてありがとう。私はこのプロジェクトを(多かれ少なかれ)終了し、自分のリポジトリにアップロードしました

from tkinter import *
whichNum = False
def buttonOne():
    global 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):
    global 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 = []
    global whichNum

    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())
    button1.grid(column=0, row=2)
    button11 = Button(text="+", command = lambda: commandButtonPress("+"))
    button11.grid(column=3, row=2)
    window.mainloop()

main()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

このテーブルを作成する最良の方法は何でしょうか?

分類Dev

cronジョブを使用してmysqlテーブルを更新する最良の方法は何ですか?

分類Dev

pytestのテストで複数のブール値の組み合わせをサポートするための最良の方法は何でしょうか?

分類Dev

Rの正規表現を使用してベクトル内の繰り返し文字列をカウントする最良の方法は何でしょうか?

分類Dev

ChainBuilderを使用してガトリングユーザーフローを定義するための最良の方法は何でしょうか?

分類Dev

モーダルに値を渡すための最良の方法は何でしょうか?

分類Dev

バンドルレジスタをチゼルのすべての1に初期化する最良の方法は何でしょうか?

分類Dev

Angularを使用して、ユーザーが以前にチェックボックスをオンにしてからそれを呼び出すかどうかを保存するための最良の方法は何でしょうか?

分類Dev

最高のパフォーマンス値を持つSpringデータを使用して行を更新するための最良の方法は何ですか?

分類Dev

テキストファイルをパンダのデータフレームに変換する最良の方法は何でしょうか?

分類Dev

このデータをピボットするための良い方法は何でしょうか?

分類Dev

IReliableDictionaryを検索するための最良の方法は何でしょうか?

分類Dev

opencvを使用して水面の白いボールを検出する最良の方法は何ですか?

分類Dev

以下のHTMLタグのxpath / Cssセレクターは何でしょうか、Seleniumxpathを使用して特定のラジオボタンを選択する方法

分類Dev

dbからウェブサイトを生成するための最良の方法は何でしょうか

分類Dev

レッドストーン信号を出力するブロックを作成する最良の方法は何でしょうか

分類Dev

SPAによって消費されるJSONデータをフォーマットするための最良の方法は何でしょうか?

分類Dev

Symfony2でメニューを作成するための最良の方法は何でしょうか

分類Dev

ファイルパスを取得するための最良の方法は何でしょうか

分類Dev

SML:リストを調べて他のすべての値を取得するための最良の方法は何でしょうか?

分類Dev

Batchfile:ブール変数を宣言して使用するための最良の方法は何ですか?

分類Dev

Javaで自然なDSLを作成するための最良のツールは何でしょうか?

分類Dev

.NETを使用してインターネット接続を確認する最良の方法は何ですか?

分類Dev

中間テーブルを回避するための最善の方法は何でしょうか

分類Dev

ラベルを対応するQlistWidgetsに揃える最良のアプローチは何でしょうか

分類Dev

Java Fxを使用して、検索フィルターを作成するときに整数値を検索するための最良の方法は何ですか?

分類Dev

DiscordJSを使用してチャットで絵文字の画像を取得するための最良の方法は何でしょうか?

分類Dev

AntiXSSライブラリを使用して投稿から不正なHTMLコンテンツをフィルタリングする最良の方法は何ですか?

分類Dev

NOLIOを使用して、SQLスクリプトを実行するための最良の方法は何でしょうか?

Related 関連記事

  1. 1

    このテーブルを作成する最良の方法は何でしょうか?

  2. 2

    cronジョブを使用してmysqlテーブルを更新する最良の方法は何ですか?

  3. 3

    pytestのテストで複数のブール値の組み合わせをサポートするための最良の方法は何でしょうか?

  4. 4

    Rの正規表現を使用してベクトル内の繰り返し文字列をカウントする最良の方法は何でしょうか?

  5. 5

    ChainBuilderを使用してガトリングユーザーフローを定義するための最良の方法は何でしょうか?

  6. 6

    モーダルに値を渡すための最良の方法は何でしょうか?

  7. 7

    バンドルレジスタをチゼルのすべての1に初期化する最良の方法は何でしょうか?

  8. 8

    Angularを使用して、ユーザーが以前にチェックボックスをオンにしてからそれを呼び出すかどうかを保存するための最良の方法は何でしょうか?

  9. 9

    最高のパフォーマンス値を持つSpringデータを使用して行を更新するための最良の方法は何ですか?

  10. 10

    テキストファイルをパンダのデータフレームに変換する最良の方法は何でしょうか?

  11. 11

    このデータをピボットするための良い方法は何でしょうか?

  12. 12

    IReliableDictionaryを検索するための最良の方法は何でしょうか?

  13. 13

    opencvを使用して水面の白いボールを検出する最良の方法は何ですか?

  14. 14

    以下のHTMLタグのxpath / Cssセレクターは何でしょうか、Seleniumxpathを使用して特定のラジオボタンを選択する方法

  15. 15

    dbからウェブサイトを生成するための最良の方法は何でしょうか

  16. 16

    レッドストーン信号を出力するブロックを作成する最良の方法は何でしょうか

  17. 17

    SPAによって消費されるJSONデータをフォーマットするための最良の方法は何でしょうか?

  18. 18

    Symfony2でメニューを作成するための最良の方法は何でしょうか

  19. 19

    ファイルパスを取得するための最良の方法は何でしょうか

  20. 20

    SML:リストを調べて他のすべての値を取得するための最良の方法は何でしょうか?

  21. 21

    Batchfile:ブール変数を宣言して使用するための最良の方法は何ですか?

  22. 22

    Javaで自然なDSLを作成するための最良のツールは何でしょうか?

  23. 23

    .NETを使用してインターネット接続を確認する最良の方法は何ですか?

  24. 24

    中間テーブルを回避するための最善の方法は何でしょうか

  25. 25

    ラベルを対応するQlistWidgetsに揃える最良のアプローチは何でしょうか

  26. 26

    Java Fxを使用して、検索フィルターを作成するときに整数値を検索するための最良の方法は何ですか?

  27. 27

    DiscordJSを使用してチャットで絵文字の画像を取得するための最良の方法は何でしょうか?

  28. 28

    AntiXSSライブラリを使用して投稿から不正なHTMLコンテンツをフィルタリングする最良の方法は何ですか?

  29. 29

    NOLIOを使用して、SQLスクリプトを実行するための最良の方法は何でしょうか?

ホットタグ

アーカイブ