0 / 0 / 0
Регистрация: 17.09.2020
Сообщений: 5
PyQt5

Не работает функция для сохранения и восстановления значений виджета пользовательского интерфейса

17.09.2020, 14:27. Показов 1395. Ответов 7

Студворк — интернет-сервис помощи студентам
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtCore import QSettings
from GeoAssistant_v1_0 import Ui_glavnaya0
import sys, os, configparser, inspect
 
class glavnaya0(QtWidgets.QMainWindow):
    def __init__(self):
        super(glavnaya0,self).__init__()
        self.ui=Ui_glavnaya0()
        self.ui.setupUi(self)  
        #self.ui.rdb_show_max.setChecked(True)
        self.settings=QSettings('GeoAssistant', 'ShAMS Group', self)
        self.ui.loadSetting()
 
    def closeEvent(self, e):
        self.saveSetting()
        e.accept()                
  
    def saveSetting(self):
        self.settings.setValue('size', self.size())
        self.settings.setValue('pos', self.pos())
 
        for name, obj in inspect.getmembers(self.ui):
          if isinstance(obj, QComboBox):
              name = obj.objectName() 
              index = obj.currentIndex()  
              text = obj.itemText(index) 
              settings.setValue(name, text)  
 
          if isinstance(obj, QLineEdit):
              name = obj.objectName()
              value = obj.text()
              settings.setValue(name, value) 
 
          if isinstance(obj, QCheckBox):
              name = obj.objectName()
              state = obj.isChecked()
              settings.setValue(name, state)
 
          if isinstance(obj, QRadioButton):
              name = obj.objectName()
              value = obj.isChecked()
              settings.setValue(name, value)
              
          if isinstance(obj, QSpinBox):
              name  = obj.objectName()
              value = obj.value()            
              settings.setValue(name, value)
 
          if isinstance(obj, QSlider):
              name  = obj.objectName()
              value = obj.value()            
              settings.setValue(name, value)
 
 
    def loadSetting(self):
          self.resize(self.settings.value('size',  QtCore.QSize(500, 500)))
          self.move(self.settings.value('pos', QtCore.QPoint(60, 60)))
 
          for name, obj in inspect.getmembers(self.ui):
              if isinstance(obj, QComboBox):
                  index = obj.currentIndex()  
                  name = obj.objectName()
                  value = (settings.value(name))
 
                  if value == "":
                      continue
 
                  index = obj.findText(value)
 
                  if index == -1: 
                        obj.insertItems(0, [value])
                        index = obj.findText(value)
                        obj.setCurrentIndex(index)
                  else:
                        obj.setCurrentIndex(index)
                        
 
              if isinstance(obj, QLineEdit):
                  name = obj.objectName()
                  value = (settings.value(name).decode('utf-8'))  
                  obj.setText(value) 
 
              if isinstance(obj, QCheckBox):
                  name = obj.objectName()
                  value = settings.value(name)  
                  if value != None:
                      obj.setChecked(strtobool(value)) 
 
              if isinstance(obj, QRadioButton):
                 name = obj.objectName()
                 value = settings.value(name)  
                 if value != None:
                     obj.setChecked(strtobool(value))
 
              if isinstance(obj, QSlider):
                  name = obj.objectName()
                  value = settings.value(name)   
                  if value != None:           
                      obj. setValue(int(value))   
 
              if isinstance(obj, QSpinBox):
                  name = obj.objectName()
                  value = settings.value(name)    
                  if value != None:
                      obj. setValue(int(value))
 
                 
 
app=QtWidgets.QApplication([])
application=glavnaya0()
application.show()
 
sys.exit(app.exec())
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.09.2020, 14:27
Ответы с готовыми решениями:

Ошибка: функция сохранения и восстановления
Доброго времени суток, форумчане! Есть приложение BeatBox, написанное по книге Сьерра и Бейтс "Изучаем Java". В самом...

Проектировка пользовательского интерфейса для БД
здравствуйте! Есть три таблицы: "оборудование", "операции", "задания". Одна и та же операция может быть сделана на разном...

Разработка пользовательского интерфейса для программы на C++
Доброго времени суток, уважаемые участники форума! Я начинающий программист изучавший до недавнего времени язык "pascal", сейчас...

7
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
17.09.2020, 14:39
Интересно, что же там произошло?
0
0 / 0 / 0
Регистрация: 17.09.2020
Сообщений: 5
17.09.2020, 14:51  [ТС]
после запуска появляется вот такое сообщение
Python
1
2
3
4
5
6
7
== RESTART: C:\Users\User\AppData\Local\Programs\Python\Python38-32\geomain.py =
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\geomain.py", line 185, in <module>
    application=glavnaya0()
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\geomain.py", line 15, in __init__
    self.ui.loadSetting()
AttributeError: 'Ui_glavnaya0' object has no attribute 'loadSetting'
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
17.09.2020, 14:54
Лучший ответ Сообщение было отмечено ShAMS как решение

Решение

ShAMS, ну естественно, потому что у тебя метод loadSetting находится не в ui, а в glavnaya0

Добавлено через 38 секунд
То бишь исправь self.ui.loadSetting() на self.loadSetting()
1
0 / 0 / 0
Регистрация: 17.09.2020
Сообщений: 5
17.09.2020, 15:00  [ТС]
Теперь вот такая ошибка появилась
Python
1
2
self.resize(self.settings.value('size',  QtCore.QSize(500, 500)))
NameError: name 'QtCore' is not defined
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
17.09.2020, 15:09
ShAMS, ну естественно x2, ты же его не импортировал.

Добавлено через 47 секунд
То бишь х2 исправь from PyQt5 import QtWidgets, QtGui на from PyQt5 import QtWidgets, QtCore, QtGui
1
0 / 0 / 0
Регистрация: 17.09.2020
Сообщений: 5
17.09.2020, 15:15  [ТС]
спасибо вам за ответи. я очень благодарен

есть еще вопрос. я совсем новичок в сфере питон

вот такая ошибка
Python
1
2
    if isinstance(obj, QComboBox):
NameError: name 'QComboBox' is not defined
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
17.09.2020, 15:19
ShAMS, QtWidgets.QComboBox

У тебя там миллион ошибок.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.09.2020, 15:19
Помогаю со студенческими работами здесь

Создание пользовательского интерфейса для работы с firebird
Добрый день. Ребят подскажите, с помощью какой технологии проще будет создать пользовательский интерфейс для работы с БД, и вообще...

Как добавить сторонний шрифт для пользовательского интерфейса?
Мне надо было добавить сторонний шрифт в программу; в основной форме все прекрасно работало, но в пользовательских интерфейсах возникают...

Средство для визуальной разработки пользовательского интерфейса в Eclipse
Может кто-нибудь знает есть ли (а если есть, то где) в этой IDE средство для визуальной разработки пользовательского интерфейса? (ну...

Создание библиотеки компонентов для которых не существует пользовательского интерфейса
Добрый день. Подскажите как создать библиотеку компонентов для которых не существует пользовательского интерфейса например таких как Timer...

Написание программы для подбора цветовой гаммы пользовательского интерфейса
Написать программу, предназначенную для подбора цветовой гаммы пользовательского интерфейса. Программа должна выводить на экран макет...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru