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

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

14.04.2015, 12:14. Показов 3053. Ответов 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
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 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
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 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
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 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
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru