С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
 Аватар для Wi0M
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734

PyQt классы

15.07.2015, 16:14. Показов 2773. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Такой вопрос назрел. Вот создал я через QtDesigner форму. Сделала из ui класс на 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
# -*- coding: utf-8 -*-
 
# Form implementation generated from reading ui file 'mainForm.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!
 
from PyQt4 import QtCore, QtGui
 
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s
 
try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)
        
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(400, 386)
        self.gridLayout = QtGui.QGridLayout(Form)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.label = QtGui.QLabel(Form)
        self.label.setObjectName(_fromUtf8("label"))
        self.gridLayout.addWidget(self.label, 3, 0, 1, 1)
        self.lineEdit = QtGui.QLineEdit(Form)
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.gridLayout.addWidget(self.lineEdit, 4, 0, 1, 1)
        self.pushButton = QtGui.QPushButton(Form)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.gridLayout.addWidget(self.pushButton, 4, 1, 1, 1)
 
        self.retranslateUi(Form)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.setTextInEdit)
        QtCore.QMetaObject.connectSlotsByName(Form)
 
    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form", None))
        self.label.setText(_translate("Form", "TextLabel", None))
        self.pushButton.setText(_translate("Form", "PushButton", None))
        
    def setTextInEdit(self):
        self.label.setText(_translate("Form", self.lineEdit.text(), None))
                    
if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Form = QtGui.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())
работает... затем я захотел добавить обработку событий нажатий на клавиши клавиатуры, ну чтобы по Return TextLabel присваивался текст из lineEdit, по backspace оба виджета очищались, а по esc приложение закрывалось. У меня это тоже получилось) только мне пришлось добавить новый класс
Python
1
2
3
4
5
6
7
8
9
10
11
class Escape(QtGui.QWidget):
   def keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_Escape:
            self.close()
        elif event.key() == QtCore.Qt.Key_Return:
            ui.setTextInEdit()
        elif event.key() == QtCore.Qt.Key_Delete:
            ui.label.clear()
            ui.lineEdit.clear()
        else:
            ignore()
ну и переделать
Python
1
2
3
4
5
6
7
8
if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Form = Escape()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())
вот. а затем я захотел добавить statusbar. вот теперь я и не понимаю как мне быть...
вот пример отображения статусбара
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
!/usr/bin/python
 
# statusbar.py
 
import sys
from PyQt4 import QtGui
 
class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
 
        self.resize(250, 150)
        self.setWindowTitle('statusbar')
 
        self.statusBar().showMessage('Ready')
 
 
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
и что мне теперь новый класс писать? а что тогда с обработкой клавиатуры? просто не могу понять никак... а что если в дальнейшем не нужно будет еще что нибудь из QtGui? объясните пожалуйста.

Добавлено через 3 часа 3 минуты
разобрался со статусбаром
Python
1
2
3
self.status = QtGui.QStatusBar(Form)
self.status.setGeometry(QtCore.QRect(0, 538, 531, 27))
self.status.showMessage("System Status | Normal")
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.07.2015, 16:14
Ответы с готовыми решениями:

Разница между PyQT 5 и PyQT 6
Добрый день, форумчане. Прошел тут курс всеми вами любимого автора, познакомился с GUI TKinter, и по вашим советам решил освоить PyQT. ...

Из QT в PyQt
Здравствуйте, подскажите правильно ли у меня получился перевод из QT в PyQt? Интересует именно выполнение класса QCoreApplication и...

Paint pyqt
Добрый вечер, помогите разобраться с кодом я в Python (pyqt, Desinger) новичок. Можете обяснить по подробнее с "Class Canvas"...

11
15.07.2015, 17:13

Не по теме:

Я бы не советовал использовать дизайнер, лучше пиши код руками, тогда и понимать лучше будешь.

Цитата Сообщение от Wi0M Посмотреть сообщение
Вот создал я через
Цитата Сообщение от Wi0M Посмотреть сообщение
Сделала из ui
Ты уж определись с родом :D

0
15.07.2015, 17:16  [ТС]

Не по теме:

alex925, это опечатка))
не хочу руками) руками долго и скучно) привык я в делфях, кинул кнопку и все. а тут муть какая то, понапридумали сигналы... слоты... почему нельзя было все проще сделать? есть событие и есть обработчик этого события. очень трудно дается мне понимание всего этого. нет свойства Align зато есть Layot тоже муть какая то...

0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.07.2015, 17:17
Цитата Сообщение от Wi0M Посмотреть сообщение
не хочу руками) руками долго и скучно)
Бред, причем полный
0
 Аватар для Wi0M
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734
15.07.2015, 17:23  [ТС]
сколько людей столько и мнений. это же графический интерфейс, так почему же не делать его в графическом дизайнере?)) это проще и быстрее.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.07.2015, 17:34
Wi0M, Потому что код плохо понимаешь из-за этого (ты сам с этим даже столкнулся судя по вопросу =))
Ну, а вообще хочу заметить, что когда пишешь код руками, то потом это довольно быстро получается + нет лишнего корявого кода)
0
 Аватар для Wi0M
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734
15.07.2015, 17:55  [ТС]
alex925, я код плохо понимаю не из-за того что делаю интерфейс в десигнере, а из-за того что нет нормальной документации на русском языке. и приходится учиться по тому что есть. а еще было круто знать человека которому я смог бы свою, уже огромную, кучу дурацких и тривиальных вопросов задать как по самому python так и по написанию GUI на python

Добавлено через 1 минуту
когда начинал писать на делфях у меня хоть знакомый был который мне пинка поддавал, за что огромное ему спасибо) а сейчас приходится атаковать форумы)))
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
15.07.2015, 18:10
Цитата Сообщение от Wi0M Посмотреть сообщение
а из-за того что нет нормальной документации на русском языке
Ну это обычная практика для программирования, я давно уже смерился с этим и воспринимаю как норму. Вообще англоязычной литературы по pyqt хватает и это мне в этом фреемворке очень нравится. Он очень функциональный и удобный + много примеров можно найти.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
16.07.2015, 01:56
А я Qt-шным Assistant-ом, как справочником пользуюсь, что немало доставляет - если привыкнуть, он весьма удобный...
0
 Аватар для Wi0M
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734
19.07.2015, 05:56  [ТС]
easybudda, надо поглядеть, а то я не знал для чего он. просто лень было запускать и смотреть)
в принципе я много документации и в нете нашел, как на оф сайте так и переведеные варианты. только там код для Qt как я понял. спсибо хоть, alex925, книгу подсказал) тоже интересная но не так удобно) труднее искать, но зато код на PyQt
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
19.07.2015, 10:35
Цитата Сообщение от Wi0M Посмотреть сообщение
труднее искать
Ну не знаю... Я или по оглавлении смотрю и без проблем нахожу нужное место или с помощью поиска по книге все найти можно.
0
3 / 3 / 1
Регистрация: 09.02.2016
Сообщений: 126
07.12.2017, 13:58
А ещё очень удобно искать нужное Архивариусом 3000 среди множества книг и примеров программ, но надо все книги в OCR перевести.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2017, 13:58
Помогаю со студенческими работами здесь

PyQt и C++ виджеты
Как прикрутить в библиотеку PyQt сторонние Qt виджеты, написанные на C++?

PyQT+OpenCV
Имеется следующий код, который работает в консоли (распознавание номерных знаков) class Video(): cap = cv2.VideoCapture(0) ...

Работа с PyQt
Вообщем,есть два окна,сначала появляется 1-ое окно и при определенном условии оно должно закрыться,пусть будет нажатая кнопка, и передать...

Установка PyQt
Есть такой скрипт: from PyQt5.QtCore import* from PyQt5.QtGui import* import sys class qtWindow(QMainWindow): def...

QCheckBox в PyQt
Никак не могу присобачить stateChanged из QCheckBox к какому-либо действию. Делаю примерно так: from PyQt4 import QtGui, QtCore ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Изучаю 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