From b584c6b69e0ca9154a7540a94b4e4fa0e5657bee Mon Sep 17 00:00:00 2001 From: cskraju Date: Sat, 5 Apr 2025 16:45:42 +0530 Subject: [PATCH] Fixed UI issues: non-resizable window, grey background, white buttons --- Calculator/Components/Calculator_Button.py | 88 ++++++++++++++++-- Calculator/Components/Calculator_Entry.py | 14 ++- .../Calculator_Button.cpython-313.pyc | Bin 3894 -> 4954 bytes .../Calculator_Entry.cpython-313.pyc | Bin 574 -> 661 bytes Calculator/main.py | 37 +++++++- 5 files changed, 125 insertions(+), 14 deletions(-) diff --git a/Calculator/Components/Calculator_Button.py b/Calculator/Components/Calculator_Button.py index 6b029f4..7e93ee0 100644 --- a/Calculator/Components/Calculator_Button.py +++ b/Calculator/Components/Calculator_Button.py @@ -1,14 +1,77 @@ +# from tkinter import * + +# class CalculatorButtons: +# def __init__(self, root, entry): +# self.root = root +# self.entry = entry +# self.value1 = 0 +# self.value2 = 0 +# self.operator = '' + +# def on_button_click(self,textbtn): +# match textbtn: +# case '+': +# self.value1 = float(self.entry.get()) +# self.operator = '+' +# self.entry.delete(0, END) +# case '-': +# self.value1 = float(self.entry.get()) +# self.operator = '-' +# self.entry.delete(0, END) +# case '*': +# self.value1 = float(self.entry.get()) +# self.operator = '*' +# self.entry.delete(0, END) +# case '/': +# self.value1 = float(self.entry.get()) +# self.operator = '/' +# self.entry.delete(0, END) +# case '=': +# result = 0 +# self.value2 = float(self.entry.get()) +# self.entry.delete(0, END) +# try: +# if self.operator == '+': +# result = self.value1 + self.value2 +# elif self.operator == '-': +# result = self.value1 - self.value2 +# elif self.operator == '*': +# result = self.value1 * self.value2 +# elif self.operator == '/': +# result = self.value1 / self.value2 +# self.entry.insert(0, str(result)) +# except ZeroDivisionError: +# self.entry.insert(0, "Error") +# except SyntaxError: +# self.entry.insert(0, "Error") +# case 'CL': +# self.entry.delete(0, END) +# CalculatorButtons.value1 = 0 +# CalculatorButtons.value2 = 0 +# CalculatorButtons.operator = '' +# case _: +# self.entry.insert(END, textbtn) + +# def main(self,textbtn, x , y): +# btn = Button(self.root, text=textbtn, font=("Arial", 18), width=5, height=2, +# bg="#34495E", fg="white", relief=RAISED, bd=5,command=lambda :self.on_button_click(textbtn)) +# btn.grid(row=x, column=y, sticky="nsew") + + from tkinter import * -class CalculatorButtons: +class CalculatorButtons: def __init__(self, root, entry): self.root = root self.entry = entry self.value1 = 0 self.value2 = 0 self.operator = '' - - def on_button_click(self,textbtn): + + self.button_frame = Frame(self.root) + self.button_frame.grid(row=1, column=0, columnspan=4, pady=20, padx=20) + + def on_button_click(self, textbtn): match textbtn: case '+': self.value1 = float(self.entry.get()) @@ -32,7 +95,7 @@ def on_button_click(self,textbtn): self.entry.delete(0, END) try: if self.operator == '+': - result = self.value1 + self.value2 + result = self.value1 + self.value2 elif self.operator == '-': result = self.value1 - self.value2 elif self.operator == '*': @@ -51,8 +114,15 @@ def on_button_click(self,textbtn): CalculatorButtons.operator = '' case _: self.entry.insert(END, textbtn) - - def main(self,textbtn, x , y): - btn = Button(self.root, text=textbtn, font=("Arial", 18), width=5, height=2, - bg="#34495E", fg="white", relief=RAISED, bd=5,command=lambda :self.on_button_click(textbtn)) - btn.grid(row=x, column=y, sticky="nsew") \ No newline at end of file + + def create_canvas_button(self, textbtn, x, y, bg_color): + button_canvas = Canvas(self.button_frame, width=110, height=55, bg=bg_color, bd=0, highlightthickness=0) + button_canvas.grid(row=x, column=y, sticky="nsew", padx=3, pady=3) # Reduced gap between buttons + button_canvas.create_text(55, 27.5, text=textbtn, fill="white", font=('Arial', 21)) + button_canvas.create_rectangle(0, 0, 110, 55, outline="#36454F", width=5) # Slightly larger button + button_canvas.bind("", lambda event, textbtn=textbtn: self.on_button_click(textbtn)) + + def main(self, textbtn, x, y): + self.create_canvas_button(textbtn, x, y, bg_color="#0e0e1a") + self.button_frame.grid_rowconfigure(x, weight=1) + self.button_frame.grid_columnconfigure(y, weight=1) diff --git a/Calculator/Components/Calculator_Entry.py b/Calculator/Components/Calculator_Entry.py index 3c5c8ec..e488ca7 100644 --- a/Calculator/Components/Calculator_Entry.py +++ b/Calculator/Components/Calculator_Entry.py @@ -1,6 +1,16 @@ +# from tkinter import * + +# def result_input(root): +# r_input = Entry(root, font=("Arial", 24), bd=10, relief=FLAT, justify="left") +# r_input.grid(row=0, column=0, columnspan=4, ipadx=8, ipady=8, pady=10) +# return r_input + from tkinter import * def result_input(root): - r_input = Entry(root, font=("Arial", 24), bd=10, relief=FLAT, justify="left") - r_input.grid(row=0, column=0, columnspan=4, ipadx=8, ipady=8, pady=10) + # r_input = Entry(root, font=("Arial", 24), bd=10, relief=FLAT, justify="left") + # r_input.grid(row=0, column=0, columnspan=4, ipadx=8, ipady=8, pady=10,sticky="wsne") + r_input = Entry(root, font=("Arial", 18), bd=10, relief=FLAT, justify="left", width=10) + r_input.grid(row=0, column=0, columnspan=4, ipadx=5, ipady=5, pady=10, padx=10, sticky="ew") + return r_input \ No newline at end of file diff --git a/Calculator/Components/__pycache__/Calculator_Button.cpython-313.pyc b/Calculator/Components/__pycache__/Calculator_Button.cpython-313.pyc index fb031059354dc99abe169fbae26bd9256d66568e..0e0e1cd47288a1a15cabc1f504ddc0073d87f4ad 100644 GIT binary patch delta 2055 zcma)7O>h)N6rSFlneF^+AdpBB!mh9Dy90vVTz1vpM-JDY{cOwu#U z0+zKoSsW~@aEdCt#gp-t63f~n2Q6cH*+n$i(OYV1moK+Pcl#1ZnvD-VR5lOP>oqXaNB+USeHa2x=L{-qG8rLZrWDP zHhq_#$oanOc$Jr7w-v72!i?eL^7>b|zkjW8v8le4k|yfxrulH~w3KA4bv5j4uJar7 z#Fh=d&go$t>9VfCPaRR>Qby7uNg9G>CRMoSLlqflr45LturPJ=OtoA)H|wy*>g>&# z4wL81^bJ9;YdDCZeFdhRqUJ1N%~K*yV_HaZhGx@Rn8_Zor)evArQ3jbJl=Rb&hm+r zN2r&uysOl_l1rR)^N#JBX)m$yaK_m=;uyM{qZTp7ZPy|HvAC13Zqg^l-Pt+V>iAwF z_!PaQzQT_^AN+!Phd+w`*4?wX_jBzt?Z@r|x8#So^AT=d#hqo`xr$?D99tY*I$s>T z|KiGt5{^BGVW#CJ*Z8IR+T;X5aczbydKpKx%Luvc>bzO(`{hzR0=NdTkJ^%s{ z{n`<`>#yz}DDNI9hVP$P87@t}Q*zvL$K0*xBiz1<3teU0b$5RG$bGbeN*JUwLf=!y zJ&V1I>E#{8{L1AL2Kk~`=quyC#rdV4C4ITKm|dAKVbGixOTyJ?G5@nhe!|n@`7GYz z>LUV-fZ4~u+>xM_BB{H+_;jA!mg1c=G$O}?F?oMODkLBn;!;O}`*>!+c8<}Iz=x8A zIvgMaWYC1VNy1jj!KWdn<^?=7nV#cXo=w)ud!_-M*K(cdY$ituYZIz!|9z?jBVKRx zAWuJilasfAcs#ml)`B0RJq7;g-s?aXB+=!>Bko%=i<)@Albc%K{xaUbG`4J(FmS`0 z7W&J$e`&thTEhJg@UdDAR%?&9bJ6yy-CcA+{_m008W=VVC%DiuSlG!oalBN+yZ{_) zHw@1=0pf<~`!oy1M?Ay$LK5CZ#Zit~LHK{B$AkS)S_@(299nC8K^a(^M2eC@f3}2` z(W(_UNJ3YL_*b)zPiWP{s%-HQo0e_6t+m@-Gc$;fD4dKQ zj5e$BswdHlMiT!54;T-E(P$L?ZOq@ZQ8YHW5yoFi-&-i4hYQiE}YAVh|&3U=t^X z4J$Kg8N@+}VW)J_u}z!cgnL`qt4O@mcK402L%kDRVHZ%DYZYHA-Fz=CNadX67{u#H z#k@&SkonPirl^uNEt8m39F2{jkSqIpRD~yrsNNm)Z-HSq;U9p3x%>V$7>?|G5_lY# z%|0(aEiOi)x}b}?q|4|2hwH*P7>9j= zu51JsRNWW#+tRq?_JkXwXIgbtuZxNiz<~6}G=a)Ps9;!24Xo^v%$0|&uXRsfU$lRe z%2VeH#H;}KacIM|@BqZYSncOna82T{f7QDaXfUQh)XttX0oAhu?P3b^vNJO%%nqvV zvy4(YYYfueYw#bKB*d|CSIH>YUHdF2V_0~Q8P&)r%j>{=%0Dw;A({S^M2ktZfUkZ? zUPFz{t<_P9n3oBaa*j>h@4=?&T%Ib(vvUu(MRMu{p(9BO+&tDjCO` zEZJ1Sq>w3I(Il!=C-LY+m9e2C`sfIi@~Dv2!Fmd`#q{bK(-To}_ow|2g0dEGoe^zqcSpCVj;9o`bZ zs)4)eZS~&C*|uBid$p&!o$S%fBUhE@9@j#wa7ryHA zM#JU+N6q^Xbl82?uw|OVCq2cf<)M2MEDN%{X*tv(cmFyAMY-4O?*(zX_(-u} q6BAWakMsQh<=DSgdk>pcXbc@xoC^IqVr4Uf@OOT1TSaMR+N;Fw-v83hamE2-VO1Z^W zl$w*7ns$pltF*WzGp+I#Yk6i$Nk$P9NDm8$Uzi7CbU&WSn6r8$Wu`9<;m1*v)Q!TF^{ z$*J+qIr(|1I3$sT^_}x`3xF!~N>EI4%_}LY)GMgG#Z#18T$)odc`YNmt31$+AP*MX z0Eq^MFKi6_A`@I@)NT;k<8ngnLPXR>zUT(`8!X)IK8-#T0%sJi2;7jkqwqk{g@B+7 z(eVvF7g-V>On%2GW&<*5B}0({kSdY`61O;Pa`RJ4b5iY!l!07OJQVW-i4V+-jEr9d P7#PJqv#>D=gEasE@KA|Z delta 350 zcmbQrx{rnLGcPX}0}!Meyhwk{Fpqo!Fro%wfr< zz!1u)!l23Nr^$4S)v+iuG3TWOP}xh6S+`hnQqxK_S#GhU<>!^$VoFN6#a5J>lbM=! zi#@BfxFj>JvWN+!m<2>|00~XD$^4AElf4-AEWMqrVnT~ki;80c5{oj66JuObi?d7e z3u0UnOA?b3i&KkZoD*}BOLG!S@{3}e^K%RG^HTFlieo0QnGiUma7EyT#2tkPiW+<_vUuI#7HaVO4AjH` z@)3JUc4l5lYEco$yp;?^vOuax8c5vYu*uC&Da}c>D^dV*K_OMl3nV@;Gcq#XVc-`1 L%)-nl3|0>S57lBt diff --git a/Calculator/main.py b/Calculator/main.py index c8cedbd..78f3757 100644 --- a/Calculator/main.py +++ b/Calculator/main.py @@ -1,3 +1,34 @@ +# from tkinter import * +# from Components.Calculator_Entry import result_input +# from Components.Calculator_Button import CalculatorButtons + +# root = Tk() +# btns = [ '1', '2' , '3' , '-' , '4' , '5' , '6' , '*' , '7' , '8' , '9' , '+' , '0' ,'=' ,'/','CL'] + +# def main_fram(): +# root.title("Calculator") +# root.geometry('400x430') +# root.resizable(width=True,height=False) +# root.configure(bg="#34495E") + +# def buttons(entry): +# counter = 0 +# clubtn = CalculatorButtons(root, entry) +# for i in range(1,11,3): +# for j in range(4): +# clubtn.main(btns[counter],i,j) +# counter += 1 + +# def main(): +# main_fram() +# entry = result_input(root) +# buttons(entry) +# root.mainloop() + +# if __name__ == "__main__": +# main() + + from tkinter import * from Components.Calculator_Entry import result_input from Components.Calculator_Button import CalculatorButtons @@ -7,9 +38,9 @@ def main_fram(): root.title("Calculator") - root.geometry('400x430') - root.resizable(width=True,height=False) - root.configure(bg="#34495E") + root.geometry('505x375') + root.resizable(width=True,height=True) + root.configure(bg="#2A2A2A") def buttons(entry): counter = 0