بداية
مرحبًا ، في المقالة السابقة ، أوضحت كيفية صنع لعبة في بيثون ، والآن ننظر في كيفية صنع آلة حاسبة بسيطة في بيثون تكينتير .
إنشاء 485 في 550. أبعاد ليست مهمة ، وأنا أحب هذه. نشير أيضًا إلى أنه لن يتم تغيير النافذة.
from tkinter import * class Main(Frame): def __init__(self, root): super(Main, self).__init__(root) self.build() def build(self): pass def logicalc(self, operation): pass def update(): pass if __name__ == '__main__': root = Tk() root["bg"] = "#000" root.geometry("485x550+200+200") root.title("") root.resizable(False, False) app = Main(root) app.pack() root.mainloop()
عظيم ، والمضي قدما.
جعل الأزرار
في طريقة الإنشاء ، قم بإنشاء القائمة التالية:
btns = [ "C", "DEL", "*", "=", "1", "2", "3", "/", "4", "5", "6", "+", "7", "8", "9", "-", "+/-", "0", "%", "X^2" ]
إنه مسؤول عن جميع الأزرار التي تظهر في نافذتنا.
أنشأنا القائمة ، والآن نذهب من خلال الحلقة وعرض هذه الأزرار. للقيام بذلك ، بنفس الطريقة ، اكتب ما يلي:
x = 10 y = 140 for bt in btns: com = lambda x=bt: self.logicalc(x) Button(text=bt, bg="#FFF", font=("Times New Roman", 15), command=com).place(x=x, y=y, width=115, height=79) x += 117 if x > 400: x = 10 y += 81
عظيم ، لدينا أزرار. إضافة النقش مع الإخراج. أريد أن يكون النص على اليسار ، لذلك ، لا يلزم كتابة سمات محاذاة النص.
self.formula = "0" self.lbl = Label(text=self.formula, font=("Times New Roman", 21, "bold"), bg="#000", foreground="#FFF") self.lbl.place(x=11, y=50)
منطق الكتابة
def logicalc(self, operation): if operation == "C": self.formula = "" elif operation == "DEL": self.formula = self.formula[0:-1] elif operation == "X^2": self.formula = str((eval(self.formula))**2) elif operation == "=": self.formula = str(eval(self.formula)) else: if self.formula == "0": self.formula = "" self.formula += operation self.update() def update(self): if self.formula == "": self.formula = "0" self.lbl.configure(text=self.formula)
لذلك ، نظرًا لعدم توفر إدخال لوحة المفاتيح ، يمكننا تحمل ذلك ، فقط ابحث عن العروض الخاصة. أزرار (C ، DEL ، =) وفي حالات أخرى فقط إضافة هذا إلى الصيغة.
تحتوي هذه الآلة الحاسبة على العديد من أوجه القصور ، لكننا لم نحاول جعلها مثالية.
اعتذر عن الاخطاء في المقال. اكتب ، سأصحح.
الرمز الكامل لإصداري من الحاسبة:
from tkinter import * class Main(Frame): def __init__(self, root): super(Main, self).__init__(root) self.build() def build(self): self.formula = "0" self.lbl = Label(text=self.formula, font=("Times New Roman", 21, "bold"), bg="#000", foreground="#FFF") self.lbl.place(x=11, y=50) btns = [ "C", "DEL", "*", "=", "1", "2", "3", "/", "4", "5", "6", "+", "7", "8", "9", "-", "(", "0", ")", "X^2" ] x = 10 y = 140 for bt in btns: com = lambda x=bt: self.logicalc(x) Button(text=bt, bg="#FFF", font=("Times New Roman", 15), command=com).place(x=x, y=y, width=115, height=79) x += 117 if x > 400: x = 10 y += 81 def logicalc(self, operation): if operation == "C": self.formula = "" elif operation == "DEL": self.formula = self.formula[0:-1] elif operation == "X^2": self.formula = str((eval(self.formula))**2) elif operation == "=": self.formula = str(eval(self.formula)) else: if self.formula == "0": self.formula = "" self.formula += operation self.update() def update(self): if self.formula == "": self.formula = "0" self.lbl.configure(text=self.formula) if __name__ == '__main__': root = Tk() root["bg"] = "#000" root.geometry("485x550+200+200") root.title("") root.resizable(False, False) app = Main(root) app.pack() root.mainloop()