рдЕрдЬрдЧрд░ + Pyside2 рдпрд╛ рдмрд╕ "рдХреИрд▓рдХреБрд▓реЗрдЯрд░"

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!

рдореЗрд░рд╛ рдирд╛рдо рд╕рд╛рд╢рд╛ рд╣реИред рдореИрдВ рдПрдХ рдЬреВрдирд┐рдпрд░ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВред рдореИрдВ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЯреЗрд╕реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкрд╛рдпрдерди + рд╕реЗрд▓реЗрдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкрд╛рдпрдерди рдЗрддрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдиреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ! рдореИрдВ рдПрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЕрд▓рд╛ рд╕рд░рд▓ "рдХреИрд▓рдХреБрд▓реЗрдЯрд░"ред рдореЗрд░реА рдкрд╕рдВрдж Pyside2 рдкрд░ рдЧрд┐рд░ рдЧрдИред рдореИрдВ рд╕рд╣реА рдХреЛрдб рдпрд╛ рдкрд╛рда рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ред рдмрд╕ рдПрдХ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ рдЕрдЧрд░ рдХреЛрдИ, рдореЗрд░реЗ рдЬреИрд╕реЗ, рдкрд╛рдпрдерди рдореЗрдВ рд▓рдбрд╝рдЦрдбрд╝рд╛рд╣рдЯ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВрдиреЗ рдкрд░рд┐рдгрд╛рдо рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред

рдЪрд▓реЛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдУ!

рдореИрдВрдиреЗ JetBrains рд╕реЗ PyBarm IDE рдореЗрдВ рдЕрдкрдирд╛ рдХреЛрдб рд▓рд┐рдЦрд╛ред рдУрдПрд╕ - рд╡рд┐рдВрдбреЛрдЬред

PySide2 рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

pip install PySide2 

рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╛рдпрдерди рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ, рддреЛ рдЙрд╕ рдкрд░ рдЬрд╛рдПрдВ, рдлрд┐рд░ "Lib" -> "рд╕рд╛рдЗрдЯ-рдкреИрдХреЗрдЬ" -> "Pyside2" рдлрд╝реЛрд▓реНрдбрд░ред рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдбрд┐рдЬрд╛рдЗрдирд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реЛрдЧрд╛ - рдпрд╣ QtDesigner рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдкрд╛рд╕ .ui рдкреНрд░рд╛рд░реВрдк рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рдкрд╛рдпрдерди рдирд╣реАрдВ рд╕рдордЭреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕реЗ .py рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рдж рдореЗрдВ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдкрдирд╛ рдлреЙрд░реНрдо рдмрдирд╛рдПрдВред

рдЫрд╡рд┐

рд╣рдо рдЕрдкрдирд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдмрдирд╛рддреЗ рд╣реИрдВ, "рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░" рдЙрдкрдзрд╛рд░рд╛ рдореЗрдВ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рдмрдЯрди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрд╣рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ QtDesigner рдПрдХ рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рд╕реНрдЯрд╛рдЗрд▓ рд╢реАрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдЖрд╕рд╛рди рд╣реИ, рддреЛ рдЧреБрдгреЛрдВ рдореЗрдВ "рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ" рдкреИрд░рд╛рдореАрдЯрд░ рдвреВрдВрдврдХрд░, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реАрдПрд╕рдПрд╕ рдЬреНрдЮрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред

рдЫрд╡рд┐

рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЕрдкрдиреА .ui рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкрд╛рдпрдерди рдЗрд╕реЗ рд╕рдордЭ рд╕рдХреЗред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд▓рд┐рдЦреЗрдВ

 pyside2-uic "you_file.ui" -o "your_file.py" 

Pyside2-uic рдХрдорд╛рдВрдб рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рдЖрдкрдХреА .ui рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдЕрдЬрдЧрд░ рдХреА .py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдПрдХ рдкрд╛рдпрдерди рд╡рд░реНрдЧ рдмрдирд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЬрд╛рдирдХрд╛рд░ рд▓реЛрдЧ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдПрдХ рдпреВрдЖрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд┐рдирд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рд░рд╣реВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдХрд░реВрдВрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ Pyside2 рдореИрдиреБрдЕрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрдЧрд▓рд╛, рдХреЛрдб рдкрд░ рдЬрд╛рдПрдВред

рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ PyCharm рдЦреЛрд▓реЗрдВ, рдФрд░ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП calc_ui.py рдпрд╛ something_ui.py рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ _ui рдЙрдкрд╕рд░реНрдЧ рд╣рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЦреЛ рдЬрд╛рдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЫрд╡рд┐

рдЖрдЗрдП рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ .ui рд╕реЗ .py рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдиреАрдЪреЗ рд╣рдо рдЗрд╕ рдХреЛрдб рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВред

 if __name__ == '__main__': import sys app = QtWidgets.QApplication(sys.argv) Form = QtGui.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) 

рд╣рдо рдЕрдкрдиреА рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдЬрд┐рдХ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛, рдЬреИрд╕реЗ рдХрд┐, рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ "рдХреИрд▓реНрд╕реАрдбреЛрдореЛ" рдирд╣реАрдВ (рдКрдкрд░ рджреА рдЧрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕реНрдХреНрд░реАрди рдкрд░)ред

рд╣рдорд╛рд░реЗ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рд╡рд╣рд╛рдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред

рдЖрдпрд╛рдд sys рд╣рдо рд╢реБрд░реБрдЖрдд рдореЗрдВ рдлреЗрдВрдХ рджреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдЪреНрдЫреЗ рдлреЙрд░реНрдо рдХрд╛ рдирд┐рдпрдо рд╣реИред

рд╣рдо рдЕрдкрдиреЗ рдлрд╝реЙрд░реНрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ "calc_ui.py" рд╕реЗ рд╣рдо рдореБрдЦреНрдп рд╡рд░реНрдЧ Ui_MainWindow рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рдЕрдЧрд▓рд╛, рдпрджрд┐ __name__ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рд╣рдо рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

 if __name__ == '__main__': #   QApplication app = QtWidgets.QApplication(sys.argv) #    ,     calc = Calculator() #  sys.exit(app.exec_()) 

рдореИрдВрдиреЗ рдХреЛрдб рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдореНрдореАрдж рдХреЗ рд╕рд╛рде рдЯрд┐рдкреНрдкрдгреА рдХреАред рдЖрдЗрдП рдХреИрд▓рдХреНрдпреВрд▓реЗрдЯрд░ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

 class Calculator(QtWidgets.QMainWindow, Ui_MainWindow): #   def __init__(self): super().__init__() #    Ui ( ) self.setupUi(self) #    self.show() 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо "1", "2", "3" рдЖрджрд┐ рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рд╣реЛрддрд╛ рд╣реИред

рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░, рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рд╣рдо рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдмрдЯрди рдХрдиреЗрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ:

  # pressed self.pushButton.clicked.connect(self.digit_pressed) # 1 self.pushButton_2.clicked.connect(self.digit_pressed) # 2 self.pushButton_3.clicked.connect(self.digit_pressed) # 3 self.pushButton_4.clicked.connect(self.digit_pressed) # 4 self.pushButton_5.clicked.connect(self.digit_pressed) # 5 self.pushButton_6.clicked.connect(self.digit_pressed) # 6 self.pushButton_7.clicked.connect(self.digit_pressed) # 7 self.pushButton_8.clicked.connect(self.digit_pressed) # 8 self.pushButton_9.clicked.connect(self.digit_pressed) # 9 self.pushButton_10.clicked.connect(self.digit_pressed) # 0 self.pushButton_add.clicked.connect(self.pressed_equal) # + self.pushButton_ded.clicked.connect(self.pressed_equal) # - self.pushButton_div.clicked.connect(self.pressed_equal) # / self.pushButton_mul.clicked.connect(self.pressed_equal) # * self.pushButton_exp.clicked.connect(self.pressed_equal) # ** self.pushButton_log.clicked.connect(self.pressed_equal) # log self.pushButton_procent.clicked.connect(self.pressed_equal) # % self.pushButton_ENTER.clicked.connect(self.function_result) # = self.pushButton_C.clicked.connect(self.function_clear) # C self.pushButton_point.clicked.connect(self.make_fractional) # . self.pushButton_delete.clicked.connect(self.function_delete) # < self.pushButton_open_skob.clicked.connect(self.create_big_example) # ( 

Self.digit_pressed рдлрд╝рдВрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдЯрди рдкрд░ рдХреЛрдб рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдЗрдП рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ:

  # lineEdit -  ,         # text() -  ,      # setText() -          # sender() - ,     (   ,    ) def digit_pressed(self): button = self.sender() if self.lineEdit.text() == '0': #        "0",     ,     self.lineEdit.setText(button.text()) else: if self.result == self.lineEdit.text(): self.lineEdit.setText(button.text()) else: self.lineEdit.setText(self.lineEdit.text() + button.text()) self.result = 0 

рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рднреА рдореМрдЬреВрдж рд╣реИрдВред

рдЕрдм рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рджрдмрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдЪрд╛рд▓рди "+" , "-" , рдЖрджрд┐ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдЧрд╛ред

  clear() -  ,       def pressed_equal(self): button = self.sender() self.first_value = float(self.lineEdit.text()) self.lineEdit.clear() self.label.setText(str(self.first_value) + button.text()) self.equal = button.text() 

рд╣рдо self.first_value рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдорд╛рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рдореВрд▓реНрдп рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдлрд╝реАрд▓реНрдб рд╕рд╛рдлрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╕рднреА рдирдВрдмрд░ рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рд▓рд╛рдЗрдирдПрдбрд┐рдЯ (рд╣рдорд╛рд░рд╛ рдореБрдЦреНрдп рдЗрдирдкреБрдЯ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдлрд╝реАрд▓реНрдб) рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпреЛрдВ рддреИрд░рддрд╛ рд╣реИ ? рдореИрдВ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдлреНрд▓реЛрдЯ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЬрдм рдореВрд▓реНрдп рдХреЛ рдкрд░рд┐рдгрд╛рдо рдмреНрд▓реЙрдХ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЕрдВрдд рдореЗрдВ ".0" рд╣реИ, рддреЛ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рддрд╛рдХрд┐ рд╕рдВрдЦреНрдпрд╛ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реЛред рдореИрдВрдиреЗ рдмреЗрд╣рддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ред

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рджрдмрд╛рдиреЗ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╣реИрдВ, рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ? рдЕрдЧрд▓рд╛ рд╣рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рдмрдЯрди = (ENTER) рд╣реИ ред

  def function_result(self): if self.equal == '+': self.function_addition() elif self.equal == '-': self.function_subtraction() elif self.equal == "/": self.function_divison() elif self.equal == '*': self.function_multiply() elif self.equal == "^": self.exponentiation() elif self.equal == "%": self.function_percent() elif self.equal == "log": self.function_log() 

рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рд╡реЗрд░рд┐рдПрдмрд▓ self.first_value рдЕрдм рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рдкрд╣рд▓рд╛ рд╡реЗрд░рд┐рдПрдмрд▓ рд╣реИ рдЬреЛ рд╣рдо рдПрдВрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ self.equal рдореЗрдВ рд╡рд╣ рдСрдкрд░реЗрд╢рди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рджрдмрд╛рдпрд╛ рдерд╛ред рдЬрдм рд╣рдо рджреВрд╕рд░реА рд╕рдВрдЦреНрдпрд╛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ = рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдСрдкрд░реЗрд╢рди рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╣рдо 2 рдЪрд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВред

рд╣рдо рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдорд┐рд▓рд╛:

  def function_addition(self): self.determinate_second_value() self.result = float(self.first_value + self.second_value) self.form_result() def function_subtraction(self): self.determinate_second_value() self.result = float(self.first_value - self.second_value) self.form_result() def function_divison(self): self.determinate_second_value() self.result = float(self.first_value / self.second_value) self.form_result() def function_multiply(self): self.determinate_second_value() self.result = float(self.first_value * self.second_value) self.form_result() def function_exponentiation(self): self.determinate_second_value() self.result = float(self.first_value ** self.second_value) self.form_result() def function_percent(self): self.determinate_second_value() self.result = float(self.first_value * (self.second_value / 100)) self.form_result() def function_log(self): self.determinate_second_value() self.result = float(math.log(self.first_value, self.second_value)) self.form_result() 

Self.determinate_second_value () рдлрд╝рдВрдХреНрд╢рди рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЪрд░ рдХреЗ рджреВрд╕рд░реЗ рдореВрд▓реНрдп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдереЛрдбрд╝рд╛ рддрд╛рд░реНрдХрд┐рдХ рдФрд░ рдХреБрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╣реИ, рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЬрдм рд╕реНрдорд╛рд░реНрдЯ рд▓реЛрдЧ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗред

рдереЛрдбрд╝рд╛ рд░рд┐рдлреНрд░реЗрд╢рдореЗрдВрдЯред

  • self.first_value - рдкрд╣рд▓реЗ рдирдВрдмрд░ рдХрд╛ рдорд╛рди рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  • self.equal - рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рджрдмрд╛рдП рдЧрдП рдСрдкрд░реЗрд╢рди рдХреЗ рдЪрд░ рдХреЛ рдорд╛рд░рд╛ рд╣реИ
  • self.second_value - рдХреЗ рджреВрд╕рд░реЗ рдЪрд░ рдХрд╛ рдорд╛рди рд╣реИ

рдЕрдЧрд▓рд╛, рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ, рд╣рдо self.form_result () рдХрд╣рддреЗ рд╣реИрдВ , рдЬреЛ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд╣рдорд╛рд░рд╛ рдкрд░рд┐рдгрд╛рдо рдмрдирд╛рддрд╛ рд╣реИред рд╣рдо рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕реНрд╡рдпрдВ рдЪрд░ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ ред

  def form_result(self): self.result = str(self.result) if self.result[-2:] == '.0': self.result = self.result[:-2] self.lineEdit.setText(str(self.result)) self.label.clear() 

рдореИрдВ рдЖрддреНрдорд╕рдВрдкрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕рдордЭрд╛рдКрдВрдЧрд╛ [-2:] ред [-2:] рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрдВрддрд┐рдо 2 рд╡рд░реНрдгреЛрдВ рдХреА рддреБрд▓рдирд╛ ".0" рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рддреЛ рд╣рдорд╛рд░рд╛ рдкрд░рд┐рдгрд╛рдо рдореБрдЦреНрдп рд▓рд╛рдЗрдирдПрдбрд┐рдЯ рдмреНрд▓реЙрдХ, рдмрдзрд╛рдИ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдореИрдВ рдпрд╣рд╛рдВ рдПрдХ рдХреЛрдб рднреА рдбрд╛рд▓реВрдВрдЧрд╛ рдЬреЛ рдПрдХ рд╡рд░реНрдг рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдкреВрд░реА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╣рдЯрд╛рддрд╛ рд╣реИ рдпрд╛ "рдЬреЛрдбрд╝рддрд╛ рд╣реИред" (рдбреЙрдЯ) рдПрдХ рднрд┐рдиреНрдирд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

  def make_fractional(self): value = self.lineEdit.text() if '.' not in value: self.lineEdit.setText(value + '.') def function_delete(self): value = self.lineEdit.text() self.lineEdit.setText(value[:-1]) def function_clear(self): self.lineEdit.setText('0') 

рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рддрд╣рдд рд╕рднреА рдХреЛрдб:

рдкреВрд░рд╛ рдХреЛрдб
 from PySide2 import QtWidgets from calc_ui import Ui_MainWindow import sys import math class Calculator(QtWidgets.QMainWindow, Ui_MainWindow): def __init__(self): super().__init__() #    Ui ( ) self.setupUi(self) self.show() self.lineEdit.setText('0') self.first_value = None self.second_value = None self.result = None self.example = "" self.equal = "" # pressed self.pushButton.clicked.connect(self.digit_pressed) # 1 self.pushButton_2.clicked.connect(self.digit_pressed) # 2 self.pushButton_3.clicked.connect(self.digit_pressed) # 3 self.pushButton_4.clicked.connect(self.digit_pressed) # 4 self.pushButton_5.clicked.connect(self.digit_pressed) # 5 self.pushButton_6.clicked.connect(self.digit_pressed) # 6 self.pushButton_7.clicked.connect(self.digit_pressed) # 7 self.pushButton_8.clicked.connect(self.digit_pressed) # 8 self.pushButton_9.clicked.connect(self.digit_pressed) # 9 self.pushButton_10.clicked.connect(self.digit_pressed) # 0 self.pushButton_add.clicked.connect(self.pressed_equal) # + self.pushButton_ded.clicked.connect(self.pressed_equal) # - self.pushButton_div.clicked.connect(self.pressed_equal) # / self.pushButton_mul.clicked.connect(self.pressed_equal) # * self.pushButton_exp.clicked.connect(self.pressed_equal) # ** self.pushButton_log.clicked.connect(self.pressed_equal) # log self.pushButton_procent.clicked.connect(self.pressed_equal) # % self.pushButton_ENTER.clicked.connect(self.function_result) # = self.pushButton_C.clicked.connect(self.function_clear) # C self.pushButton_point.clicked.connect(self.make_fractional) # . self.pushButton_delete.clicked.connect(self.function_delete) # < self.pushButton_open_skob.clicked.connect(self.create_big_example) # ( def digit_pressed(self): # sender - ,     (   ,    ) button = self.sender() if self.lineEdit.text() == '0': self.lineEdit.setText(button.text()) else: if self.result == self.lineEdit.text(): self.lineEdit.setText(button.text()) else: self.lineEdit.setText(self.lineEdit.text() + button.text()) self.result = 0 def form_result(self): self.result = str(self.result) if self.result[-2:] == '.0': self.result = self.result[:-2] self.lineEdit.setText(str(self.result)) self.label.clear() def make_fractional(self): value = self.lineEdit.text() if '.' not in value: self.lineEdit.setText(value + '.') def function_delete(self): value = self.lineEdit.text() self.lineEdit.setText(value[:-1]) def function_clear(self): self.lineEdit.setText('0') def pressed_equal(self): button = self.sender() self.first_value = float(self.lineEdit.text()) self.lineEdit.clear() self.label.setText(str(self.first_value) + button.text()) self.equal = button.text() def function_addition(self): self.determinate_second_value() self.result = float(self.first_value + self.second_value) self.form_result() def function_subtraction(self): self.determinate_second_value() self.result = float(self.first_value - self.second_value) self.form_result() def function_divison(self): self.determinate_second_value() self.result = float(self.first_value / self.second_value) self.form_result() def function_multiply(self): self.determinate_second_value() self.result = float(self.first_value * self.second_value) self.form_result() def function_exponentiation(self): self.determinate_second_value() self.result = float(self.first_value ** self.second_value) self.form_result() def function_percent(self): self.determinate_second_value() self.result = float(self.first_value * (self.second_value / 100)) self.form_result() def function_log(self): self.determinate_second_value() self.result = float(math.log(self.first_value, self.second_value)) self.form_result() def determinate_second_value(self): self.second_value = float(self.lineEdit.text()) self.lineEdit.clear() self.label.setText(str(self.first_value) + self.equal + str(self.second_value)) def function_result(self): if self.equal == '+': self.function_addition() elif self.equal == '-': self.function_subtraction() elif self.equal == "/": self.function_divison() elif self.equal == '*': self.function_multiply() elif self.equal == "^": self.exponentiation() elif self.equal == "%": self.function_percent() elif self.equal == "log": self.function_log() if __name__ == '__main__': #   QApplication app = QtWidgets.QApplication(sys.argv) #    calc = Calculator() #  sys.exit(app.exec_()) 


рд╣рд╛рдВ, рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдмрдбрд╝реЗ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ!

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рд╕реМрднрд╛рдЧреНрдп рдФрд░ рд╡рд┐рдХрд╛рд╕! рдпрд╣ рдХрдорд╛рд▓ рд╣реИред

рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЬреВрдирд┐рдпрд░рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓ рдкрд░ рднреА рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ , рдЬрд╣рд╛рдВ рдореИрдВ рдПрдХ рдЬреВрдирд┐рдпрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдЬреАрд╡рди рдФрд░ рдЙрд╕рдХреЗ рдХрд╛рдВрдЯреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдмрдирдиреЗ рдХрд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi458536/


All Articles