実現したいこと
Entryウィジェットが二つあるのですがどちらもボタンで入力できるようにしたいです。
また改善点がある場合は教えていただきたいです。
前提
pythonを学習し始めて2週間ほどなので正しくコードがかけていないかもしれません。プログラミングも学校で少し習った程度なのでよければお知恵をお貸しください。
勉強のために微積分と解析の電卓を作っていて、まだ画面に表示するソースコードを書いてる段階です。今後計算をするプログラムを書こうと思っているのですが、微積分などが得意なライブラリも教えてもらいたいです。
class transは今後別の画面に遷移した時に使う予定です。
該当のソースコード
import tkinter as tk from tkinter import ttk root = tk.Tk() root.geometry('400x500') root.title('微積分と解析') BUTTON = [ ['7', '8', '9', '%', 'sin', '(', 'log'], ['4', '5', '6', '*', 'cos', ')', 'e'], ['1', '2', '3', '-', 'tan', '^', '∞'], ['0', ',', '/', '+', 'C', 'B', '√'] ] SYMBOL = ['+', '-', '*', '/', '%', '^', 'log', 'e', '∞'] class trans: def show_screen_limit(self): screen_limit.pack() class CaluGui: def __init__(self): self.calc_str = '' #Calc_buttonのframeを定義 button_frame = ttk.Frame(width=300, height=400) button_frame.propagate(False) button_frame.pack(side=tk.BOTTOM) self.calc_var = tk.StringVar() self.calc_label = tk.Label(entry, textvariable=self.calc_var, font=("", 15)) self.calc_label.pack(anchor=tk.W) for y, row in enumerate(BUTTON, 1): for x, num in enumerate(row): button = tk.Button(button_frame, text=num, font=('', 12), width=5, height=3) button.grid(row=y, column=x) button.bind('<Button-1>', self.click_button) def click_button(self, event): check = event.widget['text'] if check == 'C': self.calc_str = '' elif check == 'B': self.calc_str = self.calc_str[:-1] else: self.calc_str += check self.calc_var.set(self.calc_str) screen_limit = tk.Frame(root) screen_limit.pack() label = tk.Label(screen_limit, text="式を入力してください") label.pack() entry = tk.Entry(screen_limit) entry.propagate(False) entry.pack() label = tk.Label(screen_limit, text="xをどこに飛ばすか入力してください:") label.pack() entry1 = tk.Entry(screen_limit) entry1.propagate(False) entry1.pack() Calubutton = CaluGui() trans() root.mainloop()
補足情報(FW/ツールのバージョンなど)
バージョンはpython3.12.1
Pycharmを使用しています
回答1件
あなたの回答
tips
プレビュー