それで私はウィンドウのように開く Python 計算機を作ろうとしていましたが、計算の前にクリックした数字を表示させようとしていたのですが、追加もリストもすべて正常でした。実際の数字を表示する必要がありましたが、何も表示されない場合は、ラベルを「hi」に変更しようとしました。たとえば、リストに問題があるのに何も表示されないかどうかを確認するには、「結果」に表示される数字を取得するのを手伝ってくれませんか。エリア?これが私のコードです:
root = tk.Tk()
color = '#263D42'
numbers = []
Background = tk.Canvas(root, height=600, width=601, bg=color)
Background.pack()
resultBack = tk.Canvas(root, height=150, width=400, bg="#E4E0E0")
resultBack.place(x=50, y=1)
root.title('Calculator')
root.iconphoto(False, tk.PhotoImage(file='plus.ico'))
root.resizable(width = False, height = False)
root.geometry("500x600")
for number in numbers:
label = tk.Label(root, text="hi", bg="black")
label.pack()
frame = tk.Frame(root, bg="white")
frame.place(relwidth=0.8, relheight=0.8, relx=0.1, rely=0.1) #frame
def addOne():
for widget in frame.winfo_children():
widget.destroy()
numbers.append('1')
for number in numbers:
print(number)
label = tk.Label(root, text=number, bg="black")
label.pack()
print(numbers)
one = tk.Button(root, text="1", padx=10, pady=5, fg="#000000", bg="#ffffff", command=addOne)
one.place(x=30, y=30)
root.mainloop()
番号に何も追加していないときに、番号の番号を呼び出します。
– アルンディープ・チョハン
2020 年 9 月 3 日 12:42
「数字」に何かが追加されるためです。ボタンを押すと、起動時に空の電卓が表示されます。また、「数字」に何かを追加してみました。それが問題かどうかをテストするためのリストですが、何も表示されないため問題ではありません
– フレンチヌードル
2020 年 9 月 3 日 12:44
余談ですが、一般的にはフロントエンド (この場合は tkinter) またはバックエンド (この場合は実際の電卓) のどちらかに焦点を当てる方が簡単です。両方を同時に行おうとすると、作業がさらに難しくなるだけです
– E-A
2020 年 9 月 3 日 13:18
今、私は次のことに集中しようとしています。フロントエンド、ユーザー インターフェイスがうまく動作するようになり次第、バックエンドに集中します。バックエンドの作業はまだ始めていません。
– フレンチヌードル
2020 年 9 月 3 日 13:22
追加しているラベルはすべて、ウィンドウの表示領域の外側に完全に表示されます。ウィンドウを強制的に固定サイズにしているため、ウィンドウ自体を拡大して表示することはできませんが、そのコンテンツ領域は完全に背景で埋められています。ルートではなく、背景の上に配置したコンテナの 1 つ (resultBack またはフレーム) にラベルを追加する必要があります。ウィンドウ自体。
– ジェイソンハーパー
2020 年 9 月 3 日 13:30
------------------------
そのようにラベルを作成したり削除したりするべきではありません。変更するだけです。
おそらく次のようなことを試してみてください:
import tkinter as tk
root = tk.Tk()
numbers = []
root.title('Calculator')
root.resizable(width = False, height = False)
root.geometry("500x600")
label_text = tk.StringVar()
label_text.set('hi')
label = tk.Label(root, textvariable=label_text)
label.pack()
frame = tk.Frame(root, bg="white")
frame.place(relwidth=0.8, relheight=0.8, relx=0.1, rely=0.1) #frame
def addOne():
numbers.append(1)
work = ""
for i in numbers:
work+=str(i)
label_text.set(work)
one = tk.Button(root,
text="1",
padx=10,
pady=5,
fg="#000000",
bg="#ffffff",
command=addOne)
one.place(x=30, y=30)
root.mainloop()
これで数値が表示されるはずです。 StringVars は、この種のことを行うための味方です。それらを更新すると、tk はそれらがアタッチされているウィジェットを自動的に更新します。
ここからは、見栄えを良くするなどの理由で、おそらくさまざまな場所に移動することになりますが、各ボタン (addTwo、addThree、addFour など) にメソッドを追加する必要はおそらくありません。さらにヘルプが必要な場合はお知らせください。