ユーザー入力を使用してTkinterを使用して出力を書き込むにはどうすればよいですか?

モニッシュ

ボタン付きのGUI電卓を作成するコードを作成しようとして、Tkinterヘルプを検索しようとしましたが、ヘルプを取得できませんでした。表示されている数値の値を表示するために、下部のコメントアウトされたセクションを組み込むにはどうすればよいですか?私のコードに提案を自由に追加してください。

編集:@abarnertが提案したようにコードを修正しましたが、コードを実行すると、常に無効な操作が書き込まれます。これを修正する方法がわかりません。誰かが私のコードを修正するためのより良いアイデアを持っていますか?操作を機能させる必要があります。私が編集したコードは以下のとおりです。

from math import sqrt
from tkinter import *
window = Tk()
window.title("Welcome to Calculator ")
window.configure(background = "white")
Label (window, text = "Calculator", bg = "white") .grid(row = 0, column = 
0, sticky = N)



#click function
def click():
    n = n_textentry.get()
    m = m_textentry.get()
    operation = operation_textentry.get()
    if operation == 1:
        print(n + m)

    elif operation == 2:
        print(n - m)

    elif operation == 3:
        print(n * m)

    elif operation == 4:
        print(n / m)

    elif operation == 5:
        print(n ** m)

    elif operation == 6:
        print(sqrt(n))

    else:
        print("Invalid Operation ")




#to create the box for the first number and store it
Label (window, text = "Enter the first number", bg = "white") .grid(row = 
1, column = 0, sticky = N)
n_textentry = Entry(window, width = 10, bg = "white")
n_textentry.grid(row = 2, column = 0, sticky = N)
Button(window, text = "Submit", width = 6, command=click) .grid(row = 3, 
column = 0, sticky = N)

#to create the box for the second number
Label (window, text = "Enter the second number", bg = "white") .grid(row = 
5, column = 0, sticky = N)
m_textentry = Entry(window, width = 10, bg = "white")
m_textentry.grid(row = 6, column = 0, sticky = N)
Button(window, text = "Submit", width = 6, command=click) .grid(row = 7, 
column = 0, sticky = N)

#to show list of options
Label (window, text = '''               Enter 1 for addition
                    Enter 2 for subtraction
                         Enter 3 for multiplication
              Enter 4 for division
                        Enter 5 for exponentiation

Enter 6 for square root *This will only work for 1st choice*''', bg = 
"white") .grid(row = 9, column = 0, sticky = W)

operation_textentry = Entry(window, width = 10, bg = "white")
operation_textentry.grid(row = 10, column = 0, sticky = N)
Button(window, text = "Submit", width = 6, command=click) .grid(row = 11, 
column = 0, sticky = N)
abarnert

GUIプログラムでは、GUIが起動して実行されると、イベントハンドラーへのコールバックでのみコードを実行できます。これはイベントドリブンプログラミングと呼ばれ、最初は慣れるまでに時間がかかることがあります。

たとえば、ユーザーが最初のSubmitボタンをクリックすると、関数が呼び出されますclickその関数の中で、あなたはそこで適切なことを何でもすることができます。

3つのボタンすべてに同じclick関数を呼び出させましたここではあまり意味がありません。

実際、なぜ3つの別々のボタンが必要なのですか?典型的なGUIの典型的なフォームを考えてみてください。たくさんの入力フィールドがあり、ユーザーがすべてのフィールドに入力した後にクリックする単一の「送信」ボタンがあります。それでは、最初の2つのボタンを廃棄して、最後に1つだけ持ってみましょう。

これで、そのclick関数内で、「適切なことを何でも行う」ことができます。しかし、ここで何が適切ですか?

最初に行う必要があるのは、3つのEntryボックスから値を取得することですしかし、3つすべてを同じ変数に格納しようとしたため、3つすべてにアクセスすることはできず、最後の1つだけにアクセスできます。したがって、これを3回行う代わりに、次のようにします。

textentry = Entry(window, width = 10, bg = "white")

…それらすべてに異なる名前を付けます。

n_entry = Entry(window, width = 10, bg = "white")
# ...
m_entry = Entry(window, width = 10, bg = "white")
# ...
operation_entry = Entry(window, width = 10, bg = "white")

そして今、あなたのclick関数は3つの値すべてを得ることができます:

def click():
    n = n_entry.get()
    m = m_entry.get()
    operation = operation_entry.get()

もちろん、これらは文字列になりますinput()。コマンドラインアプリで呼び出しときに返されるものとまったく同じです。したがって、ここでも同じことを行う必要があります。つまり、電話intまたは電話をかけたりfloat、エラーを処理したりする必要があります。

ただし、それを実行すると、残りはclick既存のコメントアウトされたコードにすることができます。(これらのbreakステートメントを削除する必要があることを除いて、ここから抜け出すためのループはありません。)

    if operation == 1:
        print(n + m)
    elif operation == 2:
        print(n - m)
    # etc.

ただし、これらのprint呼び出しを変更して、代わりに結果をGUIに表示することもできます。たとえば、Labelという名前の空があり、results_labelそのテキストをなどに設定する場合がstr(n+m)あります。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

配列を使用してユーザー入力を取得するにはどうすればよいですか

分類Dev

エコーを使用して非ASCII文字を書き込むにはどうすればよいですか?

分類Dev

Angularを使用してデータ属性を書き込むにはどうすればよいですか?

分類Dev

StreamWriteAsText()を使用してNumber型のデータを書き込むにはどうすればよいですか?

分類Dev

列挙されたキーを使用してユーザー入力を辞書に追加するにはどうすればよいですか?

分類Dev

Pythonで学生名と学生IDを使用してユーザー入力と出力で学生IDを検索するにはどうすればよいですか?

分類Dev

cinを使用してintを要求するときに、ユーザー入力を効率的に確実に行うにはどうすればよいですか?

分類Dev

ユーザーから入力を取得し、tkinterでPythonコード(sql)として入力を実行するにはどうすればよいですか?

分類Dev

try-catchを使用して、ユーザーの入力を検証し、無効になった場合は入力を再度読み込むにはどうすればよいですか?

分類Dev

配列を使用してHTMLおよびPHPを使用してユーザー入力を表示するにはどうすればよいですか

分類Dev

ユーザーがC ++で入力しているときに、ユーザーの入力を確認するにはどうすればよいですか?

分類Dev

RxJSを使用して「ユーザーが入力しています」インジケーターを表示するにはどうすればよいですか?

分類Dev

Razorを使用してエンコードされていないJsonをビューに書き込むにはどうすればよいですか?

分類Dev

ユーザー定義関数をPythonのユーザー入力として使用するにはどうすればよいですか?

分類Dev

ユーザー入力を読み取り、それを.txtに書き込むにはどうすればよいですか。ファイル?

分類Dev

ユーザー入力を使用してHTMLを作成し、新しいタブに表示するにはどうすればよいですか?

分類Dev

forループを使用して辞書の値を入力するにはどうすればよいですか?

分類Dev

Pythonで.csvに直接書き込むときに、ユーザーが同じ入力を2回入力しないようにするにはどうすればよいですか?

分類Dev

C ++でwhileまたはforループを使用してユーザーが入力した数値を追加するにはどうすればよいですか?

分類Dev

ffmpegを使用して字幕をファイルに書き込むにはどうすればよいですか?

分類Dev

ユーザー入力に応じてiloc()を使用して増分生データを表示するにはどうすればよいですか?

分類Dev

スキャナー機能を使用してユーザーがキーボードで無限に入力して何かを入力できるようにするにはどうすればよいですか?

分類Dev

nth-child / type-ofを使用して、ユーザー入力に基づいて背景色を変更するにはどうすればよいですか?

分類Dev

onclickボタンを使用してユーザー入力をJavaScriptの変数として保存するにはどうすればよいですか?

分類Dev

JavaScriptを使用して、すべてのユーザー入力を大文字に変換するにはどうすればよいですか?

分類Dev

ユーザースクリプトを使用して共有ウェブワーカーを読み込むにはどうすればよいですか?

分類Dev

パスワードの入力を求めずにhtdigestを使用してユーザーを作成するにはどうすればよいですか?

分類Dev

端末を使用してDVDISOを書き込むにはどうすればよいですか?

分類Dev

ユーザーがjqueryを使用して入力ボックスに(キーボードを使用して)入力したときにajax()を呼び出すにはどうすればよいですか?

Related 関連記事

  1. 1

    配列を使用してユーザー入力を取得するにはどうすればよいですか

  2. 2

    エコーを使用して非ASCII文字を書き込むにはどうすればよいですか?

  3. 3

    Angularを使用してデータ属性を書き込むにはどうすればよいですか?

  4. 4

    StreamWriteAsText()を使用してNumber型のデータを書き込むにはどうすればよいですか?

  5. 5

    列挙されたキーを使用してユーザー入力を辞書に追加するにはどうすればよいですか?

  6. 6

    Pythonで学生名と学生IDを使用してユーザー入力と出力で学生IDを検索するにはどうすればよいですか?

  7. 7

    cinを使用してintを要求するときに、ユーザー入力を効率的に確実に行うにはどうすればよいですか?

  8. 8

    ユーザーから入力を取得し、tkinterでPythonコード(sql)として入力を実行するにはどうすればよいですか?

  9. 9

    try-catchを使用して、ユーザーの入力を検証し、無効になった場合は入力を再度読み込むにはどうすればよいですか?

  10. 10

    配列を使用してHTMLおよびPHPを使用してユーザー入力を表示するにはどうすればよいですか

  11. 11

    ユーザーがC ++で入力しているときに、ユーザーの入力を確認するにはどうすればよいですか?

  12. 12

    RxJSを使用して「ユーザーが入力しています」インジケーターを表示するにはどうすればよいですか?

  13. 13

    Razorを使用してエンコードされていないJsonをビューに書き込むにはどうすればよいですか?

  14. 14

    ユーザー定義関数をPythonのユーザー入力として使用するにはどうすればよいですか?

  15. 15

    ユーザー入力を読み取り、それを.txtに書き込むにはどうすればよいですか。ファイル?

  16. 16

    ユーザー入力を使用してHTMLを作成し、新しいタブに表示するにはどうすればよいですか?

  17. 17

    forループを使用して辞書の値を入力するにはどうすればよいですか?

  18. 18

    Pythonで.csvに直接書き込むときに、ユーザーが同じ入力を2回入力しないようにするにはどうすればよいですか?

  19. 19

    C ++でwhileまたはforループを使用してユーザーが入力した数値を追加するにはどうすればよいですか?

  20. 20

    ffmpegを使用して字幕をファイルに書き込むにはどうすればよいですか?

  21. 21

    ユーザー入力に応じてiloc()を使用して増分生データを表示するにはどうすればよいですか?

  22. 22

    スキャナー機能を使用してユーザーがキーボードで無限に入力して何かを入力できるようにするにはどうすればよいですか?

  23. 23

    nth-child / type-ofを使用して、ユーザー入力に基づいて背景色を変更するにはどうすればよいですか?

  24. 24

    onclickボタンを使用してユーザー入力をJavaScriptの変数として保存するにはどうすればよいですか?

  25. 25

    JavaScriptを使用して、すべてのユーザー入力を大文字に変換するにはどうすればよいですか?

  26. 26

    ユーザースクリプトを使用して共有ウェブワーカーを読み込むにはどうすればよいですか?

  27. 27

    パスワードの入力を求めずにhtdigestを使用してユーザーを作成するにはどうすればよいですか?

  28. 28

    端末を使用してDVDISOを書き込むにはどうすればよいですか?

  29. 29

    ユーザーがjqueryを使用して入力ボックスに(キーボードを使用して)入力したときにajax()を呼び出すにはどうすればよいですか?

ホットタグ

アーカイブ