Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Как создать калькулятор на питоне с графическим интерфейсом?

  1. Как создать калькулятор на питоне с графическим интерфейсом?

    Привет, коллеги! Я решил потратить вечер на написание калькулятора на питоне с графическим интерфейсом, но как-то застрял на этапе GUI. Я вот думаю, может использовать tkinter, но не уверен, что это лучший выбор. Посоветуйте, чем лучше заморочиться, какой lib юзать, и если есть примеры кода, кидайте, пожалуйста. Буду очень признателен!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Ну, tkinter вполне себе норм для новичков, особенно если только знакомишься с GUI на питоне. Вот пример простенького калькулятора с GUI на tkinter:

    Программный код:
    import tkinter as tk

    from tkinter import ttk


    def calculate
    (event=None):

        try:

            
    result_var.set(eval(entry.get()))

        
    except Exception as e:

            
    result_var.set('Error')


    root tk.Tk()

    root.title('Calculator')


    entry ttk.Entry(root)

    entry.bind('<Return>'calculate)

    entry.pack(side='top'fill='x')


    result_var tk.StringVar()

    result_label ttk.Label(roottextvariable=result_var)

    result_label.pack(side='top'fill='x')


    btn_calc ttk.Button(roottext='Calculate'command=calculate)

    btn_calc.pack(side='top')


    root.mainloop() 
    Тут всего пара-тройка строк, и калькулятор готов. Можно добавить кнопки для цифр и операций, если захочешь заморочиться.

  4. Цитата Сообщение от Самурай
    Ну, tkinter вполне себе норм для новичков, особенно если только знакомишься с GUI на питоне. Вот пример простенького калькулятора с GUI на tkinter:

    Программный код:
    import tkinter as tk

    from tkinter import ttk


    def calculate
    (event=None):

        try:

            
    result_var.set(eval(entry.get()))

        
    except Exception as e:

            
    result_var.set('Error')


    root tk.Tk()

    root.title('Calculator')


    entry ttk.Entry(root)

    entry.bind('<Return>'calculate)

    entry.pack(side='top'fill='x')


    result_var tk.StringVar()

    result_label ttk.Label(roottextvariable=result_var)

    result_label.pack(side='top'fill='x')


    btn_calc ttk.Button(roottext='Calculate'command=calculate)

    btn_calc.pack(side='top')


    root.mainloop() 
    Тут всего пара-тройка строк, и калькулятор готов. Можно добавить кнопки для цифр и операций, если захочешь заморочиться.
    Отличный пример для старта! Tkinter – это прям как раз то, что нужно для базового калькулятора. Правда, кнопок маловато, нужно будет добавить.

  5. Если хочешь что-то посерьёзнее, чем tkinter, взгляни на PyQt или PySide. Да, они сложнее, но возможностей больше и дизайн почище. Вот небольшой примерчик на PyQt:

    Программный код:
    import sys

    from PyQt5
    .QtWidgets import QApplicationQWidgetQVBoxLayoutQLineEditQPushButton


    class Calculator(QWidget):

        
    def __init__(self):

            
    super().__init__()

            
    self.initUI()


        
    def initUI(self):

            
    self.setWindowTitle('Calculator')

            
    self.setGeometry(100100280170)


            
    layout QVBoxLayout()


            
    self.result QLineEdit()

            
    layout.addWidget(self.result)


            
    btn_calc QPushButton('Calculate')

            
    btn_calc.clicked.connect(self.calculate)

            
    layout.addWidget(btn_calc)


            
    self.setLayout(layout)


        
    def calculate(self):

            try:

                
    res = eval(self.result.text())

                
    self.result.setText(str(res))

            
    except:

                
    self.result.setText('Error')


    if 
    __name__ == '__main__':

        
    app QApplication(sys.argv)

        
    calc Calculator()

        
    calc.show()

        
    sys.exit(app.exec_()) 
    Конечно, код побольше, чем в tkinter, но и возможностей больше.

  6. Цитата Сообщение от MaxMage
    Если хочешь что-то посерьёзнее, чем tkinter, взгляни на PyQt или PySide. Да, они сложнее, но возможностей больше и дизайн почище. Вот небольшой примерчик на PyQt:

    Программный код:
    import sys

    from PyQt5
    .QtWidgets import QApplicationQWidgetQVBoxLayoutQLineEditQPushButton


    class Calculator(QWidget):

        
    def __init__(self):

            
    super().__init__()

            
    self.initUI()


        
    def initUI(self):

            
    self.setWindowTitle('Calculator')

            
    self.setGeometry(100100280170)


            
    layout QVBoxLayout()


            
    self.result QLineEdit()

            
    layout.addWidget(self.result)


            
    btn_calc QPushButton('Calculate')

            
    btn_calc.clicked.connect(self.calculate)

            
    layout.addWidget(btn_calc)


            
    self.setLayout(layout)


        
    def calculate(self):

            try:

                
    res = eval(self.result.text())

                
    self.result.setText(str(res))

            
    except:

                
    self.result.setText('Error')


    if 
    __name__ == '__main__':

        
    app QApplication(sys.argv)

        
    calc Calculator()

        
    calc.show()

        
    sys.exit(app.exec_()) 
    Конечно, код побольше, чем в tkinter, но и возможностей больше.
    Да, PyQt или PySide – это уже другой уровень. Но для новичка может показаться сложновато. Хотя, попробовать стоит, возможности у них по-больше.

  7. Эй, не забывайте про Kivy! Он круто работает для кросс-платформенных решений и довольно гибкий в настройке. Плюс, это довольно веселый опыт. Вот пример:

    Программный код:
    from kivy.app import App

    from kivy
    .uix.gridlayout import GridLayout

    from kivy
    .uix.textinput import TextInput

    from kivy
    .uix.button import Button


    class CalculatorGrid(GridLayout):

        
    def __init__(self, **kwargs):

            
    super(CalculatorGridself).__init__(**kwargs)

            
    self.cols 2

            self
    .add_widget(TextInput(text='Enter expression'))

            
    self.btn Button(text='Calculate')

            
    self.btn.bind(on_press=self.calculate)

            
    self.add_widget(self.btn)


        
    def calculate(selfinstance):

            try:

                
    self.children[1].text str(eval(self.children[1].text))

            
    except:

                
    self.children[1].text 'Error'


    class CalculatorApp(App):

        
    def build(self):

            return 
    CalculatorGrid()


    if 
    __name__ == '__main__':

        
    CalculatorApp().run() 
    Kivy мощный и позволит тебе экспериментировать больше.

  8. Цитата Сообщение от Гигант
    Эй, не забывайте про Kivy! Он круто работает для кросс-платформенных решений и довольно гибкий в настройке. Плюс, это довольно веселый опыт. Вот пример:

    Программный код:
    from kivy.app import App

    from kivy
    .uix.gridlayout import GridLayout

    from kivy
    .uix.textinput import TextInput

    from kivy
    .uix.button import Button


    class CalculatorGrid(GridLayout):

        
    def __init__(self, **kwargs):

            
    super(CalculatorGridself).__init__(**kwargs)

            
    self.cols 2

            self
    .add_widget(TextInput(text='Enter expression'))

            
    self.btn Button(text='Calculate')

            
    self.btn.bind(on_press=self.calculate)

            
    self.add_widget(self.btn)


        
    def calculate(selfinstance):

            try:

                
    self.children[1].text str(eval(self.children[1].text))

            
    except:

                
    self.children[1].text 'Error'


    class CalculatorApp(App):

        
    def build(self):

            return 
    CalculatorGrid()


    if 
    __name__ == '__main__':

        
    CalculatorApp().run() 
    Kivy мощный и позволит тебе экспериментировать больше.
    О, Kivy! Это уже заявочка на кросс-платформенный калькулятор. Правда, код всё равно придётся изучить хорошенько. Кто-нибудь пробовал его юзать для таких целей?

  9. А тебе обязательно калькулятор на питоне? Может, есть смысл попробовать что-то другое, типа веб-калькулятора на JavaScript? Учитывая, какой подход можно выбрать для дизайна и функциональности, веб может быть тоже интересным вариантом.

  10. Цитата Сообщение от guliguli2
    А тебе обязательно калькулятор на питоне? Может, есть смысл попробовать что-то другое, типа веб-калькулятора на JavaScript? Учитывая, какой подход можно выбрать для дизайна и функциональности, веб может быть тоже интересным вариантом.
    Ну, веб-калькулятор – это, конечно, круто, но исходно тред был про питон. Ещё одну Python lib предлагать будешь или всё на JS переведём? ?

Страница 1 из 2 12 ПоследняяПоследняя