Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 08.11.2013
Сообщений: 9

Python PyQt4 и калькулятор)

14.04.2015, 12:14. Показов 3077. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь написать калькулятор на Python) Вот код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from PyQt4 import QtCore, QtGui
 
import Calc.Form_calc, sys, math
 
a = ''
b = ''
 
 
class Form(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Calc.Form_calc.Ui_F1()
        self.ui.setupUi(self)
        self.ui.lineEdit1 = QtGui.QLineEdit()
        self.ui.lineEdit2 = QtGui.QLineEdit()
        self.ui.bt1 = QtGui.QPushButton()
        self.ui.bt2 = QtGui.QPushButton()
        self.ui.bt3 = QtGui.QPushButton()
        self.ui.bt4 = QtGui.QPushButton()
        self.connect(self.ui.bt1, QtGui.QPushButton("add()"),
                     self.ui.bt1.on_sum)
        self.connect(self.ui.bt2, QtCore.SIGNAL("sub()"),
                     self.ui.bt2.on_sub)
        self.connect(self.ui.bt3, QtCore.SIGNAL("div()"),
                     self.ui.bt3.on_div)
        self.connect(self.ui.bt4, QtCore.SIGNAL("mult()"),
                     self.ui.bt4.on_mult)
 
    def on_sum(self):
        a = self.ui.lineEdit1
        b = self.ui.lineEdit2
        c = (a + b)
 
    def on_sub(self):
        a = self.ui.lineEdit1
        b = self.ui.lineEdit2
        c = (a - b)
 
    def on_div(self):
        a = self.ui.lineEdit1
        b = self.ui.lineEdit2
        c = (a / b)
 
    def on_mult(self):
        a = self.ui.lineEdit1
        b = self.ui.lineEdit2
        c = (a * b)
 
 
class addition(QtGui.QWidget):  # Сложение
    def __init__(self, parent=None):
        global a, b
        QtGui.QWidget.__init__(self, parent)
        a = self.ui.lineEdit1
        b = self.ui.lineEdit2
        c = (a + b)
 
 
class subtraction(QtGui.QWidget):  # Вычитание
    def __init__(self, parent=None):
        global a, b
        QtGui.QWidget.__init__(self, parent)
        a = self.ui.lineEdit1
        b = self.ui.lineEdit2
        c = (a - b)
 
 
class division(QtGui.QWidget):  # Деление
    def __init__(self, parent=None):
        global a, b
        QtGui.QWidget.__init__(self, parent)
        a = self.ui.lineEdit1
        b = self.ui.lineEdit2
        c = (a / b)
 
 
class multiplication(QtGui.QWidget):  # Умножение
    def __init__(self, parent=None):
        global a, b
        QtGui.QWidget.__init__(self, parent)
        a = self.ui.lineEdit1
        b = self.ui.lineEdit2
        c = (a * b)
 
 
if __name__ == "__main__":
    import sys
 
    app = QtGui.QApplication(sys.argv)
    window = Form()
    window.show()
    sys.exit(app.exec_())
Создал форму с помощью QtDesinger, пере конвертировал ясное дело, там имеется Label1, lineEdit 1-2, bt 1-5
Как быть?!) Что не так?... Скорее всего тут полный вздор написан, толкните в нужную сторону плз)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.04.2015, 12:14
Ответы с готовыми решениями:

Как установить PyQt4 на Python 3?
Подкинте проверенный линк на библиотеку PyQt4 for Python3.3

Установить pyqt4 для python 3.2 в Linux Ubuntu 12.04
Делал как тут. import PyQt4 В результате в Python 3.2 выдает ошибку, что не найден модуль. Устанавливаю в Linux Ubuntu 12.04. ...

Как загрузить картинку по ссылке , не сохраняя её на диске ?. (PYTHON , PYQT4)
Необходимо , чтобы можно было сохранить картинку в переменную , не загружая её на диск , для использования в PyQt4. В моём случая , мне...

9
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
14.04.2015, 16:07
Python
1
self.ui.bt1.clicked.connect(self.ui.on_sum)
и т. д.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.04.2015, 02:09
Цитата Сообщение от 3_psycho_7 Посмотреть сообщение
Создал форму с помощью QtDesinger
Очень не советую его использовать. Во 1 если в ручную писать будешь лучше поймёшь, что делаешь + код этот дизайнер генерирует мягко говоря никчёмный.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
15.04.2015, 10:05
alex925, дизайнер действительно не фонтан, но лучше пока ничего нет.
Но всяко лучше, чем писать руками. Если какие-то сложные вещи, для простых можно и написать.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.04.2015, 11:39
Цитата Сообщение от dondublon Посмотреть сообщение
Но всяко лучше, чем писать руками. Если какие-то сложные вещи,
Ну вот это спорный вопрос. Если пишешь большой проект как раз лучше писать ручками:
- во 1, ты хорошо будешь знать, что происходит где и т д, следовательно вероятность допустить ошибку меньше
- во 2 в большом приложении будет куча однотипных окон, которые будут мало чем отличаться друг от друга. Если писать это в ручную, то можно будет завести базовый класс для одинаковых окон и в дочерних просто переопределять некоторые мелочи. При таком подходе не будет головной боли, когда нужно будет внести какое-то небольшое изменение во всех этих окнах, просто подправится базовый класс и проблем не будет. В случае использования дезайнера, в таком случае вытекает тонна проблем. Если заставлять дизайнер гененировать python код, то потом в этой тонне кода можно убиться, потому что он вместо 5 строк пишет 55 кривых строк, ну а если использовать ui фалы, то замучаешься все эти файлы открывать и править.

По этим причинам я призываю не пользоваться дизайнером, а писать код в ручную + как я уже говорил, когда пишешь сам начинаешь понимать, что ты делаешь, а не бессмысленно кидаешь элементы на форму.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
15.04.2015, 14:02
Цитата Сообщение от alex925 Посмотреть сообщение
- во 1, ты хорошо будешь знать, что происходит где и т д, следовательно вероятность допустить ошибку меньше
А что я должен знать? Где мои элементы - я и так знаю, они аккуратно сложены в класс. А вероятность допустить ошибку при ручном написании, наоборот, больше, ибо человеческий фактор.

Цитата Сообщение от alex925 Посмотреть сообщение
во 2 в большом приложении будет куча однотипных окон, которые будут мало чем отличаться друг от друга. Если писать это в ручную, то можно будет завести базовый класс для одинаковых окон и в дочерних просто переопределять некоторые мелочи. При таком подходе не будет головной боли, когда нужно будет внести какое-то небольшое изменение во всех этих окнах, просто подправится базовый класс и проблем не будет.
Из этого никак не следует, что писать ручками лучше, чем в дизайнере. Надо править верхний класс - правлю в дизайнере. Что отличается, у дочерних окон - пишу ручками, да.

Цитата Сообщение от alex925 Посмотреть сообщение
По этим причинам я призываю не пользоваться дизайнером, а писать код в ручную + как я уже говорил, когда пишешь сам начинаешь понимать, что ты делаешь, а не бессмысленно кидаешь элементы на форму.
Это просто адъ и израиль какой-то. Особенно про "бессмысленно" кидать.
Если я составляю форму в дизайнере - я прекрасно понимаю, что делаю Что я делаю не так?

Описание формы вручную - есть написание большое количество рутиного кода, строчки котоого похожи друг над друга и в который незачем вникать. Это работа машины, а не человека.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.04.2015, 14:33
dondublon, машина пишет не оптимизированный кривой код, вместо нескольких строк получаешь портянку.
Там где можно создать 1 экземпляр класса, она создаёт 10 и делает кучу разных не нужных преобразований.

В общем моё дело как говориться предупредить, а стрелять в ногу ни кто не запрещает)
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
15.04.2015, 15:33
Цитата Сообщение от alex925 Посмотреть сообщение
машина пишет не оптимизированный кривой код, вместо нескольких строк получаешь портянку.
Какая оптимизация может быть в простом создании gui? Это ж не долгая операция.
Цитата Сообщение от alex925 Посмотреть сообщение
вместо нескольких строк получаешь портянку.
Да, разумеется. Только в эту портянку даже лезть не надо, не говоря уж о том, чтобы её писать.
Цитата Сообщение от alex925 Посмотреть сообщение
Там где можно создать 1 экземпляр класса, она создаёт 10 и делает кучу разных не нужных преобразований.
Что-то вы сочиняете. Это о чём, вообще?
В данном случае программа классы не создаёт, она генерит код. А уж сколько раз вы экземпляры класса создадите - дело ваше.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.04.2015, 17:00
Цитата Сообщение от dondublon Посмотреть сообщение
Что-то вы сочиняете
Я не сочиняю, это конечно не точные цифры, но факт остаётся фактом.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.04.2015, 17:24
dondublon, alex925, давайте всё-таки не отходить от темы. Если хотите развить беседу - ради Бога, только тему отдельную создайте.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.04.2015, 17:24
Помогаю со студенческими работами здесь

Калькулятор на Python-е
Помогите пожалуйста с написанием калькулятора на Python. "Python"-тема курсовой, а в ней нужно написать калькулятор с интерфейсом и ...

Калькулятор в Python
Люди добрые, у меня не получается сделать следующее задание: Реализовать на языке Python программу-калькулятор реализующую вычисление...

Python калькулятор
Можно ли как-то в коде ниже полностью отделить оформление(tkinter) от основного кода. from tkinter import * from decimal import * ...

Калькулятор на python
Здравствуйте. Есть код, нужно дописать функцию для вычисления факториала и добавить константы П(3,1415926)и е(2,71828) from tkinter...

Калькулятор на python
#калькулятор a = float(input("Введите первое число: ")) b = float(input("Введите второе число: ")) operation = ("Что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru