|
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
|
||||||
Необходимо сформировать json из данных в полях формы10.07.2022, 12:42. Показов 813. Ответов 11
Всем привет!
Необходимо из полей формы извлечь введенные данные (переменные: con, za, vo, om, am, desc). Посмотреть, какая кнопка была нажата и извлечь переменную, присвоенную нажатой кнопке (v1, v2 или v3). И записать все эти переменные со значениями в файл json при нажатии кнопки OK. Насколько я понимаю, необходимо создать словарь переменных. В моем случае - ключ это название переменной. Значение равно значению переменной. Не получается создать словарь. Буду признателен, если покажете ошибки или подправите код. Благодарю! Вот мой код.
Кликните здесь для просмотра всего текста
<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>Dialog</class> <widget class="QDialog" name="Dialog"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>591</width> <height>231</height> </rect> </property> <property name="windowTitle"> <string>Dialog</string> </property> <property name="toolTip"> <string><html><head/><body><p align="center"><br/></p></body></html></string> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(212, 212, 212);</string> </property> <widget class="QTextEdit" name="textEdit"> <property name="geometry"> <rect> <x>10</x> <y>140</y> <width>571</width> <height>51</height> </rect> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(255, 255, 255);</string> </property> <property name="html"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html4... "> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string> </property> </widget> <widget class="QLabel" name="label_5"> <property name="geometry"> <rect> <x>10</x> <y>60</y> <width>71</width> <height>31</height> </rect> </property> <property name="text"> <string><html><head/><body><p><span style=" font-size:12pt;">Делитель</span></p></body></html></string> </property> </widget> <widget class="QPushButton" name="pushButton"> <property name="geometry"> <rect> <x>90</x> <y>60</y> <width>75</width> <height>23</height> </rect> </property> <property name="toolTip"> <string><html><head/><body><p align="center"><span style=" font-size:12pt;"><br/></span></p></body></html></string> </property> <property name="styleSheet"> <string notr="true">font: 12pt "MS Shell Dlg 2"; background-color: rgb(172, 172, 172);</string> </property> <property name="text"> <string>1:1</string> </property> </widget> <widget class="QPushButton" name="pushButton_2"> <property name="geometry"> <rect> <x>170</x> <y>60</y> <width>75</width> <height>23</height> </rect> </property> <property name="styleSheet"> <string notr="true">font: 12pt "MS Shell Dlg 2"; background-color: rgb(172, 172, 172);</string> </property> <property name="text"> <string>1:10</string> </property> </widget> <widget class="QPushButton" name="pushButton_3"> <property name="geometry"> <rect> <x>250</x> <y>60</y> <width>75</width> <height>23</height> </rect> </property> <property name="styleSheet"> <string notr="true">font: 12pt "MS Shell Dlg 2"; background-color: rgb(172, 172, 172);</string> </property> <property name="text"> <string>1:100</string> </property> </widget> <widget class="QLabel" name="label_6"> <property name="geometry"> <rect> <x>10</x> <y>100</y> <width>161</width> <height>31</height> </rect> </property> <property name="styleSheet"> <string notr="true">font: 10pt "Calibri";</string> </property> <property name="text"> <string><html><head/><body><p align="center"><span style=" font-size:16pt;">Дополнительно:</span></p></body></html></string> </property> </widget> <widget class="QPushButton" name="pushButton_4"> <property name="geometry"> <rect> <x>500</x> <y>200</y> <width>75</width> <height>23</height> </rect> </property> <property name="styleSheet"> <string notr="true">font: 12pt "MS Shell Dlg 2"; background-color: rgb(236, 236, 236);</string> </property> <property name="text"> <string>OK</string> </property> </widget> <widget class="QLabel" name="label_4"> <property name="geometry"> <rect> <x>420</x> <y>30</y> <width>31</width> <height>21</height> </rect> </property> <property name="text"> <string><html><head/><body><p><span style=" font-size:12pt;">I, A</span></p></body></html></string> </property> </widget> <widget class="QLabel" name="label_7"> <property name="geometry"> <rect> <x>460</x> <y>0</y> <width>131</width> <height>20</height> </rect> </property> <property name="text"> <string><html><head/><body><p><span style=" font-size:9pt;">9/07/2022 13:30:28</span></p></body></html></string> </property> </widget> <widget class="QLineEdit" name="lineEdit"> <property name="geometry"> <rect> <x>170</x> <y>30</y> <width>51</width> <height>20</height> </rect> </property> <property name="styleSheet"> <string notr="true">font: 12pt "Calibri"; background-color: rgb(255, 255, 255);</string> </property> <property name="text"> <string/> </property> </widget> <widget class="QLineEdit" name="lineEdit_2"> <property name="geometry"> <rect> <x>270</x> <y>30</y> <width>41</width> <height>20</height> </rect> </property> <property name="styleSheet"> <string notr="true">font: 12pt "Calibri"; background-color: rgb(255, 255, 255);</string> </property> <property name="text"> <string/> </property> </widget> <widget class="QLineEdit" name="lineEdit_3"> <property name="geometry"> <rect> <x>370</x> <y>30</y> <width>41</width> <height>20</height> </rect> </property> <property name="styleSheet"> <string notr="true">font: 12pt "Calibri"; background-color: rgb(255, 255, 255);</string> </property> <property name="text"> <string/> </property> </widget> <widget class="QLineEdit" name="lineEdit_4"> <property name="geometry"> <rect> <x>460</x> <y>30</y> <width>41</width> <height>20</height> </rect> </property> <property name="styleSheet"> <string notr="true">font: 12pt "Calibri"; background-color: rgb(255, 255, 255);</string> </property> <property name="text"> <string/> </property> </widget> <widget class="QComboBox" name="comboBox"> <property name="geometry"> <rect> <x>20</x> <y>30</y> <width>69</width> <height>22</height> </rect> </property> <property name="styleSheet"> <string notr="true">font: 12pt "Calibri"; background-color: rgb(255, 255, 255);</string> </property> </widget> <widget class="QLabel" name="label_2"> <property name="geometry"> <rect> <x>230</x> <y>30</y> <width>41</width> <height>21</height> </rect> </property> <property name="text"> <string><html><head/><body><p><span style=" font-size:12pt;">U, В</span></p></body></html></string> </property> </widget> <widget class="QLabel" name="label_3"> <property name="geometry"> <rect> <x>320</x> <y>30</y> <width>41</width> <height>21</height> </rect> </property> <property name="text"> <string><html><head/><body><p><span style=" font-size:12pt;">R, Ом</span></p></body></html></string> </property> </widget> <widget class="QLabel" name="label"> <property name="geometry"> <rect> <x>110</x> <y>30</y> <width>51</width> <height>21</height> </rect> </property> <property name="styleSheet"> <string notr="true">font: 10pt "Calibri";</string> </property> <property name="text"> <string><html><head/><body><p><span style=" font-size:12pt;">Замер</span></p></body></html></string> </property> </widget> </widget> <resources/> <connections/> </ui>
0
|
||||||
| 10.07.2022, 12:42 | |
|
Ответы с готовыми решениями:
11
Как сформировать JSON для данных разных категорий? Необходимо среагировать на изменения данных в любом контроле формы |
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
||||||
| 10.07.2022, 13:34 | ||||||
|
MaxGal,
0
|
||||||
|
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
|
|||||||||||
| 10.07.2022, 13:34 [ТС] | |||||||||||
|
Собственно, не могу сообразить как ввести в словарь значение, считанное из поля.
vo - имя переменной (в моем случае ключ словаря) Предположим, я ввожу в поле формы значение 100 (вольт). Я могу присвоить это значение переменной vo:
0
|
|||||||||||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
||||||
| 10.07.2022, 13:41 | ||||||
v1, v2, v3 сделайте полями класса
1
|
||||||
|
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
|
|||||||||||
| 10.07.2022, 17:06 [ТС] | |||||||||||
|
Red white socks, отправил свое сообщение, не увидев Вашего сообщение.
Благодарю. Попробовал добавить в исходник - возникает проблема с видимостью переменных за пределами функции. В какую строку кода вставить этот код? Добавлено через 1 минуту Red white socks, благодарю, идея понятна. Сейчас буду пробовать. Добавлено через 2 часа 53 минуты Red white socks, что-то делаю не так. При попытке выполнить код, пишет:
Мой код:
Если подставлять значения, которые выводятся при нажатии на кнопку "ОК" - значения выводятся из любого поля. А вот сам словарь не выводится.
0
|
|||||||||||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|||||||||||
| 10.07.2022, 17:34 | |||||||||||
|
MaxGal, ваш код выполняется без ошибок, по крайней мере у меня...
Правда, что там выполняется - 1. __init__ выполняется при инициализации класса, все значения полей формы понятно пустые, поэтому
2. dict - не очень хорошее имя для переменной, поскольку оно скрывает функцию dict. 3. Сам словарь dict (давайте ее назовем все же dict_) лучше сделать полем класса, чтобы его можно видеть и менять в методах класса. 4.Изменения в полях формы у вас сейчас никак не отражаются. Изменения полей в форме должны приводить к изменениям объектов/полей класса либо непосредственно после введения значений, либо по нажатию кнопки, например в функции printButton_4Pressed. 5. Нажатие кнопок, отвечающих за v1, v2, v3 должны менять dict_ сразу:
Соответственно за группу этих элементов должна отвечать одна переменная, а сами элементы формы должны быть toggle button (переключатель) и при нажатии кнопки, отжимать другие. (не в курсе есть ли в Qt5 группа переключателей, но если есть - поставить ее)
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
|
|||||||||||
| 10.07.2022, 20:30 [ТС] | |||||||||||
|
Да, понятно.
1.У меня есть (вложена под спойлером) форма. Я ввожу данные в нее и они выводятся (поштучно). 2.Понял, благодарю. 3.ОК, благодарю. 4.Написал в п.1. 5.Да, отличная идея. 6.Да, совершенно верно. Тоже об этом думал. Отжимать можно после нажатия кнопки "ОК" (и сохранения json). Буду искать имеется ли такая возможность. По-идее должно быть. Благодарю! Добавлено через 2 часа 25 минут Как подключать кнопку-переключатель нашел. Не подключаю, пока не отлажу этот код. Не могу найти что делаю не так. Уже и переменную словаря объявил - global. Уже упарился искать. В любом случае нажатие на 4-ю кнопку приводит к выводу ошибки:
Код такой:
0
|
|||||||||||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 10.07.2022, 20:56 | |
|
MaxGal, как-то все советы мимо пролетели...
Добавлено через 3 минуты MaxGal, вы понимаете, что все изменения в lineEdit нигде не фиксируются?
0
|
|
|
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
|
|
| 10.07.2022, 22:28 [ТС] | |
|
Red white socks, когда я ввожу значения в форму и нажимаю "ОК", то значения из формы выводятся.
Мне это и нужно. Только я хочу их вывести в виде словаря. Т.е. считать текущие значения из полей в словарь, сформировать из словаря файл json и, потом, очистить все поля до следующего замера / расчета. На момент формирования словаря в полях имеются значения. Их нельзя брать из полей и использовать для формирования словаря? Или я что-то не так понимаю?
0
|
|
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 11.07.2022, 01:01 | |
|
MaxGal, у вас другой код)
Словарь собирайте не при инициализации, а при нажатии кнопки. Глобальная переменная не нужна.
0
|
|
|
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
|
|||||||||||||||||||||
| 11.07.2022, 21:02 [ТС] | |||||||||||||||||||||
|
Red white socks, благодарю, за дельные советы!
![]() Да, я добавил в код три строки с командой print, чтобы визуально убедиться, что данные считываются (и выводятся на печать). Немного доработал код. Вывод с кнопок пока не подключал. Возник вопрос. Почему, если к кнопке-4 привязать значения с переменными:
0
|
|||||||||||||||||||||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 11.07.2022, 22:32 | |
|
1
|
|
| 11.07.2022, 22:32 | |
|
Помогаю со студенческими работами здесь
12
Вычисления в полях формы Установка значений в полях формы Ошибка в полях подчиненной формы Заполнение таблицы в полях формы Вопрос о ячейках листа и полях формы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
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-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|