2017-11-03 4 views
1

同じ問題で他の人のコードに基づいてやってみましたが、できませんでした。Tkinter - 整数値を取得する方法は?

ここでの問題は、calculate機能を実行する前にコードがEntryボックスから値を取得しないことです。

このコードはこのコードを実行したため、私が試した他の方法ではエラーメッセージが表示されたので、このバージョンを投稿しました。

from tkinter import * 
from math import * 
root = Tk() 

label_1 = Label(root, text="Az osszes elem szama:") 
label_2 = Label(root, text="Az A halmaz elemeinek szama:") 
label_3 = Label(root, text="A B halmaz elemeinek szama:") 
label_4 = Label(root, text="A C halmaz elemeinek szama:") 
label_5 = Label(root, text="Az A es B halmaz metszetenek elemeinek szama:") 
label_6 = Label(root, text="Az A es C halmaz metszetenek elemeinek szama:") 
label_7 = Label(root, text="Az C es B halmaz metszetenek elemeinek szama:") 
label_8 = Label(root, text="Az A es B es C halmaz metszetenek elemeinek szama:") 

U = Entry(root) 
AH = Entry(root) 
BH = Entry(root) 
CH = Entry(root) 
AHmBH = Entry(root) 
AHmCH = Entry(root) 
CHmBH = Entry(root) 
AHmBHmCH = Entry(root) 

label_1.grid(row=0, sticky=E) 
label_2.grid(row=1, sticky=E) 
label_3.grid(row=2, sticky=E) 
label_4.grid(row=3, sticky=E) 
label_5.grid(row=4, sticky=E) 
label_6.grid(row=5, sticky=E) 
label_7.grid(row=6, sticky=E) 
label_8.grid(row=7, sticky=E) 

U.grid(row=0, column=1) 
AH.grid(row=1, column=1) 
BH.grid(row=2, column=1) 
CH.grid(row=3, column=1) 
AHmBH.grid(row=4, column=1) 
AHmCH.grid(row=5, column=1) 
CHmBH.grid(row=6, column=1) 
AHmBHmCH.grid(row=7, column=1) 

U = IntVar() 
AH = IntVar() 
BH = IntVar() 
CH = IntVar() 
AHmBH = IntVar() 
AHmCH = IntVar() 
CHmBH = IntVar() 
AHmBHmCH = IntVar() 

E = int(U.get()) - (int(AH.get()) + int(BH.get()) + int(CH.get())) + 
    (int(AHmBH.get()) + int(AHmCH.get()) + int(CHmBH.get())) - int(AHmBHmCH.get()) 

def calculate(event): 
    if E < 0: 
     print("0-nal nem lehet kisebb") 

     if (int(AHmBH.get()) - int(AHmBHmCH.get())) + int(AHmBHmCH.get()) + (int(AHmCH.get()) - int(AHmBHmCH.get())) <= int(AH.get()) and (int(AHmCH.get()) - int(AHmBHmCH.get())) + int(AHmBHmCH.get()) + (
      int(CHmBH.get()) - int(AHmBHmCH.get())) <= int(CH.get()) and (int(AHmBH.get()) - int(AHmBHmCH.get())) + int(AHmBHmCH.get()) + (int(AHmCH.get()) - int(AHmBHmCH.get())) != int(AH.get()) and int(E) >= 0: 
      print(int(E)) 
      print(" db elem nem tartozik A B vagy C halmazokba") 
    else: 
     print("A megadott adatok nem valosak") 

button_1 = Button(root, text="szamitas") 
button_1.bind("<Button-1>", calculate) 
button_1.grid(row=8, columnspan=2) 

root.mainloop() 
+0

インデントを修正してください – Goralight

+0

[this](https://stackoverflow.com/help/mcve)の記事を読んで質問を書き直してください。あなたはあなたを助けようとしている人々にかなりの努力を払っています。最小限で完全で検証可能な例 –

+0

を簡単に書けるように手伝ってください。計算を行う前の時点で値を取得する必要があります。 –

答えて

4

Entryウィジェットを上書きしています。

次のコードを削除します。

U = IntVar() 
AH = IntVar() 
BH = IntVar() 
CH = IntVar() 
AHmBH = IntVar() 
AHmCH = IntVar() 
CHmBH = IntVar() 
AHmBHmCH = IntVar() 

を、最終的なコードは次のようになりますあなたのCalculate関数内

をごE変数を置く:あなたのことを、

from tkinter import * 
from math import * 
root = Tk() 

label_1 = Label(root, text="Az osszes elem szama:") 
label_2 = Label(root, text="Az A halmaz elemeinek szama:") 
label_3 = Label(root, text="A B halmaz elemeinek szama:") 
label_4 = Label(root, text="A C halmaz elemeinek szama:") 
label_5 = Label(root, text="Az A es B halmaz metszetenek elemeinek szama:") 
label_6 = Label(root, text="Az A es C halmaz metszetenek elemeinek szama:") 
label_7 = Label(root, text="Az C es B halmaz metszetenek elemeinek szama:") 
label_8 = Label(root, text="Az A es B es C halmaz metszetenek elemeinek szama:") 

U = Entry(root) 
AH = Entry(root) 
BH = Entry(root) 
CH = Entry(root) 
AHmBH = Entry(root) 
AHmCH = Entry(root) 
CHmBH = Entry(root) 
AHmBHmCH = Entry(root) 

label_1.grid(row=0, sticky=E) 
label_2.grid(row=1, sticky=E) 
label_3.grid(row=2, sticky=E) 
label_4.grid(row=3, sticky=E) 
label_5.grid(row=4, sticky=E) 
label_6.grid(row=5, sticky=E) 
label_7.grid(row=6, sticky=E) 
label_8.grid(row=7, sticky=E) 

U.grid(row=0, column=1) 
AH.grid(row=1, column=1) 
BH.grid(row=2, column=1) 
CH.grid(row=3, column=1) 
AHmBH.grid(row=4, column=1) 
AHmCH.grid(row=5, column=1) 
CHmBH.grid(row=6, column=1) 
AHmBHmCH.grid(row=7, column=1) 


def calculate(event): 
    E = int(U.get()) - (int(AH.get()) + int(BH.get()) + int(CH.get())) + (int(AHmBH.get()) + int(AHmCH.get()) + int(CHmBH.get())) - int(AHmBHmCH.get()) 
    # print E 
    if E < 0: 
     print("0-nal nem lehet kisebb") 

    if (int(AHmBH.get()) - int(AHmBHmCH.get())) + int(AHmBHmCH.get()) + (int(AHmCH.get()) - int(AHmBHmCH.get())) <= int(AH.get()) and (int(AHmCH.get()) - int(AHmBHmCH.get())) + int(AHmBHmCH.get()) + (int(CHmBH.get()) - int(AHmBHmCH.get())) <= int(CH.get()) and (int(AHmBH.get()) - int(AHmBHmCH.get())) + int(AHmBHmCH.get()) + (int(AHmCH.get()) - int(AHmBHmCH.get())) != int(AH.get()) and int(E) >= 0: 
     print(int(E)) 
     print(" db elem nem tartozik A B vagy C halmazokba") 
    else: 
     print("A megadott adatok nem valosak") 

button_1 = Button(root, text="szamitas") 
button_1.bind("<Button-1>", calculate) 
button_1.grid(row=8, columnspan=2) 

root.mainloop() 

私は追加する必要があります窪みはどこにでもあります。試してみて、それをタブまたは4つのスペースだけに入れてください。混ぜ合わせてはいけません。また、1/2/3スペースのインデントを使用しないでください。

今後、意味のある変数名を使用してみてください。 EUなどはあまり意味がなく、あまり曖昧です。これを避けるようにしてください。

+1

早く手伝ってくれてありがとう!私はプログラミングに慣れていないので、インデントがどのように機能したかは分かりませんでした。 –

関連する問題