Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt4 | 2 ошибки в работе программы с БД (из-за исключений)? [RSS Feed]

#1 Апрель 21, 2017 22:29:31

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

PyQt4 | 2 ошибки в работе программы с БД (из-за исключений)?

Kyrym
Да это понятно, естественно я пробовал типа:
И что не сработало? комбобокс должен был стать неактивным, как на картинке Priority:

Или есть вариант, создать свой класс наследник QComBobox добавить свой атрибут readOnly, и переопределить методы mousePressEvent keyPressEvent wheelEvent
 class MyComboBox(QtGui.QComboBox):
    def __init__(self, *args, **kwargs):
        super().__init__(self, *args, **kwargs)
        self.readOnly = False
    def mousePressEvent(self, event):
        if  self.readOnly == False:
            QtGui.QComboBox.mousePressEvent(self, event)
    def keyPressEvent(self, event):
        if  self.readOnly == False:
            QtGui.QComboBox.keyPressEvent(self, event)
    def wheelEvent(self, event):
        if  self.readOnly == False:
            QtGui.QComboBox.wheelEvent(self, event)
примерно так. Тогда когда атрибут readOnly будет True комбобокс не будет никак реагировать ни на клавиатуру ни на мышь.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#2 Апрель 21, 2017 22:49:18

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt4 | 2 ошибки в работе программы с БД (из-за исключений)?

PEHDOM
И что не сработало? комбобокс должен был стать неактивным, как на картинке Priority:
Комбобокс становится неактивным, но и без текста.

Я на первой странице в конце, ещё про функцию удаления городов писал, думаю, Вы не видели…

Класс попробую.
_____________________________
Добавлено.
В общем class MyComboBox я добавил.
Прописал в классе Window
 self.box_1 = MyComboBox()

И получаю вот такую ошибку:
super().__init__(self, *args, **kwargs)
RuntimeError: super-class __init__() of type MyComboBox was never called
Я изменил на:
super().__init__()
- так хоть запускается

Отредактировано Kyrym (Апрель 21, 2017 23:05:08)

Офлайн

#3 Апрель 21, 2017 23:18:34

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

PyQt4 | 2 ошибки в работе программы с БД (из-за исключений)?

Kyrym
И ещё вопрос - в QMessageBox можно заменить Yes, No на Да, Нет?
Можно, самый просто способ подключить транслятор, и все стандартные надписи у вас будут на русском:
 app = QtGui.QApplication(sys.argv)
translator = QtCore.QTranslator(app)
translator.load("qt_ru.qm")
app.installTranslator(translator)

Файл qt_ru.qm нужно выдрать из \Lib\site-packages\PyQt4\translations\ (или где у вас PyQt) и положить к себе в папку с скриптом, или писать полный путь к нему

Kyrym
Добавил функцию удаления выбранного города. С диалогом подтверждения удаления. Правильно ли так писать? Исключение я добавил для случая, когда город не выбран
Во первых, исключения вы просто игнорируете, что вобщемто не есть гуд, но в принципе бывают ситуации когда это нужно.
Во вторых вы не указывате тип исключения что уже совсем не гут.
Ну и плюс у вас слишком много текста в try, а случае исключения программа продолжает работать. Допустим исключение у вас возникнет на третей строке после try. Часть кода выполниться а часть нет, при этом вы даже не будете подозревать что у вас был какойто сбой. Вам нужно либо прерывать выполнения программы если возникло исключения, или в try добавлять только то что может вызвать исключение а остальное писать в else:, ну или хотябы выводить в except какойто текст.

После if можно не писать:
  else:
      pass

Kyrym
И получаю вот такую ошибку:
писал по памяти, может ошибся гдето с аргументами… по моему self там лишний: super().__init__(*args, **kwargs)



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Апрель 21, 2017 23:37:34)

Офлайн

#4 Апрель 22, 2017 06:18:39

MrViktor
Зарегистрирован: 2017-03-09
Сообщения: 83
Репутация: +  8  -
Профиль   Отправить e-mail  

PyQt4 | 2 ошибки в работе программы с БД (из-за исключений)?

Kyrym
 QtGui.QWidget.__init__(self, parent)
super().__init__(parent, QtCore.Qt.Window)
Что-то я уже сам туплю от Вашего кода Что это у Вас инитами творится?

Отредактировано MrViktor (Апрель 22, 2017 06:20:03)

Офлайн

#5 Апрель 22, 2017 09:57:26

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt4 | 2 ошибки в работе программы с БД (из-за исключений)?

MrViktor
то-то я уже сам туплю от Вашего кода Что это у Вас инитами творится?
Дело в том, что данную программу я запускаю через родителя. На форуме поднимал вопросы, как сделать дочернее независимое от родителя окно. Так вот данный код для этого и нужен.

Хотя, думается мне, лучше было бы использовать subprocess, но я только недавно начал его изучать.

Отредактировано Kyrym (Апрель 22, 2017 09:58:06)

Офлайн

  • Начало
  • » GUI
  • » PyQt4 | 2 ошибки в работе программы с БД (из-за исключений)?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version