Latest posts on Автозаполнение поля ввода topichttps://python.su/forum/topic/39595/2020-11-03T21:54:45+02:00Общий :: GUI :: Автозаполнение поля ввода
2020-11-03T21:54:45+02:00Rodegast212890> Имелось ввиду под “сложным” не колличество элементов, а динамичность, тоесть когда интерфейс меняеться в зависимости от задачи<br/><br/>Вообще не проблема. Ставишь штакет и переключаешь его.<br/><br/>> или генерируеться на лету<br/><br/>В этом случае дизайнер не нужен, но и в ручную форму ты тоже не набираешь.
Общий :: GUI :: Автозаполнение поля ввода
2020-11-03T20:28:34+02:00py.user.next212885<blockquote><em>PEHDOM</em><br/>тоесть когда интерфейс меняеться в зависимости от задачи, или генерируеться на лету</blockquote>Вот для этого и пишутся свои скрипты, которые потом из задизайненного интерфейса за секунду делают динамический интерфейс. Получается такой гибрид из дизайнера и собственных скриптов. А для этого, конечно, нужно разбираться в трансляции на уровне программиста - то есть знать теорию, уметь это делать практически.<br/><br/>Если же ты руками это будешь делать, то ты будешь очень медленно и очень мало работать. А результат в таком случае получается тоже не часто и очень маленький.<br/><br/><blockquote><em>PEHDOM</em><br/>интерфейс меняеться</blockquote><blockquote><em>PEHDOM</em><br/>или генерируеться</blockquote>Заходи на <a href="https://tsya.ru/">https://tsya.ru/</a> , проходи микрокурс.
Общий :: GUI :: Автозаполнение поля ввода
2020-11-03T18:22:19+02:00PEHDOM212879<blockquote><em>py.user.next</em><br/>Когда у тебя десяток программ, ты уже и не помнишь, что там за дизайн в каждой. А уж как он там устроен и как его менять дальше - тем более. Фактически заново каждый раз приходится собственную программу изучать по своим же мануалам.</blockquote>Имелось ввиду под “сложным” не колличество элементов, а динамичность, тоесть когда интерфейс меняеться в зависимости от задачи, или генерируеться на лету, примерно как писал <strong>doza_and</strong> “Внешний вид определялся шаблоном конфигурационного файла, написанном на специальном языке описания шаблонов конфигурации”
Общий :: GUI :: Автозаполнение поля ввода
2020-11-02T23:16:47+02:00py.user.next212874<blockquote><em>Rodegast</em><br/>И пользуйся дизайнером, интерфейсы в ручную набирать не нужно.<br/></blockquote>Использую дизайнер для создания .ui файлов. Это когда делаю программы на Python/Qt и на C++/Qt. Но я и не скрываю, что после создания ui-файла я могу к нему применить ещё ряд своих скриптов, которые его переделают дальше до неузнаваемости либо возьмут что-то из него и вытащат наружу.<br/><br/><blockquote><em>PEHDOM</em><br/>а ежели что посложнее то тут приходиться только ручками</blockquote>Когда у тебя десяток программ, ты уже и не помнишь, что там за дизайн в каждой. А уж как он там устроен и как его менять дальше - тем более. Фактически заново каждый раз приходится <u>собственную</u> программу изучать по своим же мануалам. <img src="/static/djangobb_forum/img/smilies/smile.png" />
Общий :: GUI :: Автозаполнение поля ввода
2020-11-02T23:06:50+02:00Rodegast212873> Мне кажется нет смысла использовать везде классы. Я обычно класс использую один раз и только для главного окна. Если нужны события в каких-то других окнах,то да обертываю в класс.<br/><br/>Поделие под названием TkInter в тебе ощущаю я…<br/><br/>> На счет интерфейса по мне так вручную проще…<br/><br/>Ну это уже много раз обсуждалось <a href="http://python.su/forum/topic/25622/?page=1#post-136978">http://python.su/forum/topic/25622/?page=1#post-136978</a><br/><br/>> Внешний вид определялся шаблоном конфигурационного файла, написанном на специальном языке описания шаблонов конфигурации.<br/><br/>ИХМО автогененрация форм это совсем другая задача, для её решения дизайнер как раз не нужен.<br/><br/>> Иногда когда две кнопки да менюшка из двух пунктов дизайнер полезен.<br/>> тоже не соглашусь, дизайнер хорош для сатичных интерфейсов один раз и нвсегда прибитых гвоздями, а ежели что посложнее то тут приходиться только ручками…<br/><br/>Как раз на сложных интерфейсах дизайнер наиболее эффективен.
Общий :: GUI :: Автозаполнение поля ввода
2020-11-02T22:52:16+02:00PEHDOM212870<blockquote><em>Rodegast</em><br/>Вот за это надо руки отрывать. И пользуйся дизайнером, интерфейсы в ручную набирать не нужно.</blockquote>тоже не соглашусь, дизайнер хорош для сатичных интерфейсов один раз и нвсегда прибитых гвоздями, а ежели что посложнее то тут приходиться только ручками…
Общий :: GUI :: Автозаполнение поля ввода
2020-11-02T16:21:25+02:00doza_and212862<blockquote><em>Rodegast</em><br/>Вот за это надо руки отрывать. И пользуйся дизайнером, интерфейсы в ручную набирать не нужно.</blockquote><blockquote><em>Ser5+</em><br/>На счет интерфейса по мне так вручную проще. </blockquote>Да, сомнительно что всегда надо в дизайнере делать. Вот недавно редактор конфигурационных файлов делали. Внешний вид определялся шаблоном конфигурационного файла, написанном на специальном языке описания шаблонов конфигурации. Там из элементов которые в дизайнере можно набрать помоему только статусбар был. Остальное все на ходу лепилось.<br/><br/>Иногда когда две кнопки да менюшка из двух пунктов дизайнер полезен. В последних 5 наших мини проектах помоему ни разу не было чтобы интерфейс делали в дизайнере. Наверное это сильно зависит от задачек и от привычек разработчиков.
Общий :: GUI :: Автозаполнение поля ввода
2020-11-02T10:15:52+02:00Ser5+212857<strong>Rodegast</strong><br/>Почему сразу руки отрывать. Мне кажется нет смысла использовать везде классы. Я обычно класс использую один раз и только для главного окна. Если нужны события в каких-то других окнах,то да обертываю в класс.<br/>На счет интерфейса по мне так вручную проще. Сначала с него и начинал с дизайнера,заморочился что-то в нем я и сразу выбросил его. Без него нормально пишу. Понятно что после .ui превращаем в .py и дальше работаем. Да не спорю что в нем проще,но как то оно не по мне,да и вручную сразу понимаешь где то напортачил и где править.
Общий :: GUI :: Автозаполнение поля ввода
2020-10-30T19:01:28+02:00py.user.next212828<blockquote><em>Ser5+</em><br/>Но у меня этот кусок кода весь не в классе находится. Это отдельная ппг(функция). То есть из других мест открываю это диалоговое окно.</blockquote>Это мы и так видим по твоему коду. <img src="/static/djangobb_forum/img/smilies/wink.png" /> Мы тут не бухгалтерши тупые, нам объяснять не надо <img src="/static/djangobb_forum/img/smilies/big_smile.png" />
Общий :: GUI :: Автозаполнение поля ввода
2020-10-30T18:45:10+02:00Rodegast212826> Но у меня этот кусок кода весь не в классе находится<br/><br/>Вот за это надо руки отрывать. И пользуйся дизайнером, интерфейсы в ручную набирать не нужно.
Общий :: GUI :: Автозаполнение поля ввода
2020-10-30T14:36:28+02:00Ser5+212818<strong>py.user.next</strong> Но у меня этот кусок кода весь не в классе находится. Это отдельная ппг(функция). То есть из других мест открываю это диалоговое окно.<br/>А так согласен с вами,что нужно в класс обернуть и эти функции были бы внутри класса и передавать параметры не нужно было бы.<br/>В принципе может и переделаю,а так вопрос закрыт.<br/><img src="/static/djangobb_forum/img/smilies/wink.png" /><br/> <br/>
Общий :: GUI :: Автозаполнение поля ввода
2020-10-30T10:43:36+02:00py.user.next212808<blockquote><em>Ser5+</em><br/>поправьте если не так сделал</blockquote>Нельзя аргументы перегружать сильно. Нужно делать что сигнал, что слот максимально простым. А всё сложное ты делаешь внутри слота. И слот делается в виде метода класса, тогда туда не нужно ничего передавать снаружи, потому что оно внутри класса доступно.
Общий :: GUI :: Автозаполнение поля ввода
2020-10-30T10:24:56+02:00Ser5+212807Примерно так у меня получилось.<br/><div class="code"><pre> <span class="o">...</span>
<span class="n">label1</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s1">'Кол-во коробок:'</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="n">dlg</span><span class="p">)</span>
<span class="n">label1</span><span class="o">.</span><span class="n">setGeometry</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mi">150</span><span class="p">,</span><span class="mi">20</span><span class="p">)</span>
<span class="n">Line1</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">(</span><span class="s1">'0'</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="n">dlg</span><span class="p">)</span>
<span class="n">Line1</span><span class="o">.</span><span class="n">setGeometry</span><span class="p">(</span><span class="mi">180</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">20</span><span class="p">)</span>
<span class="n">label2</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s1">'Кол-во упаковок в коробке:'</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="n">dlg</span><span class="p">)</span>
<span class="n">label2</span><span class="o">.</span><span class="n">setGeometry</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">150</span><span class="p">,</span><span class="mi">20</span><span class="p">)</span>
<span class="n">Line2</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">(</span><span class="s1">'0'</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="n">dlg</span><span class="p">)</span>
<span class="n">Line2</span><span class="o">.</span><span class="n">setGeometry</span><span class="p">(</span><span class="mi">180</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">20</span><span class="p">)</span>
<span class="n">label3</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLabel</span><span class="p">(</span><span class="s1">'Кол-во россыпью:'</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="n">dlg</span><span class="p">)</span>
<span class="n">label3</span><span class="o">.</span><span class="n">setGeometry</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span><span class="mi">110</span><span class="p">,</span><span class="mi">150</span><span class="p">,</span><span class="mi">20</span><span class="p">)</span>
<span class="n">Line3</span> <span class="o">=</span> <span class="n">QtWidgets</span><span class="o">.</span><span class="n">QLineEdit</span><span class="p">(</span> <span class="s1">'0'</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="n">dlg</span><span class="p">)</span>
<span class="n">Line3</span><span class="o">.</span><span class="n">setGeometry</span><span class="p">(</span><span class="mi">180</span><span class="p">,</span><span class="mi">110</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">20</span><span class="p">)</span>
<span class="c1">#Валидатор</span>
<span class="n">Line1</span><span class="o">.</span><span class="n">setValidator</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QIntValidator</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1000</span><span class="p">,</span><span class="n">parent</span><span class="o">=</span><span class="n">dlg</span><span class="p">))</span>
<span class="n">Line2</span><span class="o">.</span><span class="n">setValidator</span><span class="p">(</span><span class="n">QtGui</span><span class="o">.</span><span class="n">QIntValidator</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1000</span><span class="p">,</span><span class="n">parent</span><span class="o">=</span><span class="n">dlg</span><span class="p">))</span>
<span class="c1">#textChanged() #Сигнал генерируется при изменении текста</span>
<span class="n">Line1</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">line1</span><span class="p">(</span><span class="n">Line1</span><span class="o">.</span><span class="n">text</span><span class="p">(),</span><span class="n">Line2</span><span class="o">.</span><span class="n">text</span><span class="p">(),</span><span class="n">Line3</span><span class="p">,</span><span class="n">kolvo_tovar0</span><span class="p">))</span>
<span class="n">Line2</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">line2</span><span class="p">(</span><span class="n">Line1</span><span class="o">.</span><span class="n">text</span><span class="p">(),</span><span class="n">Line2</span><span class="o">.</span><span class="n">text</span><span class="p">(),</span><span class="n">Line3</span><span class="p">,</span><span class="n">kolvo_tovar0</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">line1</span><span class="p">(</span><span class="n">Line1</span><span class="p">,</span><span class="n">Line2</span><span class="p">,</span><span class="n">Line3</span><span class="p">,</span><span class="n">kolvo_tovar0</span><span class="p">):</span>
<span class="k">if</span> <span class="n">Line1</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">''</span> <span class="ow">and</span> <span class="n">Line2</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">:</span>
<span class="n">kolvo_ross</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">kolvo_tovar0</span><span class="p">)</span> <span class="o">-</span> <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">Line1</span><span class="p">)</span> <span class="o">*</span> <span class="nb">int</span><span class="p">(</span><span class="n">Line2</span><span class="p">))</span>
<span class="n">Line3</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">kolvo_ross</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">line2</span><span class="p">(</span><span class="n">Line1</span><span class="p">,</span><span class="n">Line2</span><span class="p">,</span><span class="n">Line3</span><span class="p">,</span><span class="n">kolvo_tovar0</span><span class="p">):</span>
<span class="k">if</span> <span class="n">Line1</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">''</span> <span class="ow">and</span> <span class="n">Line2</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">:</span>
<span class="n">kolvo_ross</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">kolvo_tovar0</span><span class="p">)</span> <span class="o">-</span> <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">Line1</span><span class="p">)</span> <span class="o">*</span> <span class="nb">int</span><span class="p">(</span><span class="n">Line2</span><span class="p">))</span>
<span class="n">Line3</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">kolvo_ross</span><span class="p">))</span>
<span class="o">...</span>
</pre></div>
Общий :: GUI :: Автозаполнение поля ввода
2020-10-30T09:19:52+02:00Ser5+212805<strong>py.user.next</strong><br/>Спасибо. Вроде бы понял,но поправьте если не так сделал.<br/><div class="code"><pre> <span class="err">тут</span> <span class="err">лабелы</span> <span class="err">и</span> <span class="err">лине</span>
<span class="err">дальше</span> <span class="err">делаю</span> <span class="err">сигнал</span>
<span class="n">Line1</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">line1</span><span class="p">(</span><span class="n">Line1</span><span class="o">.</span><span class="n">text</span><span class="p">(),</span><span class="n">Line2</span><span class="o">.</span><span class="n">text</span><span class="p">(),</span><span class="n">Line3</span><span class="p">,</span><span class="n">kolvo_tovar0</span><span class="p">))</span>
<span class="n">Line2</span><span class="o">.</span><span class="n">textChanged</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">line2</span><span class="p">(</span><span class="n">Line2</span><span class="o">.</span><span class="n">text</span><span class="p">(),</span><span class="n">Line2</span><span class="o">.</span><span class="n">text</span><span class="p">(),</span><span class="n">Line3</span><span class="p">,</span><span class="n">kolvo_tovar0</span><span class="p">))</span>
<span class="err">И</span> <span class="err">уже</span> <span class="err">в</span> <span class="err">функциях</span> <span class="err">применяю</span> <span class="nb">set</span>
<span class="k">def</span> <span class="nf">line1</span><span class="p">(</span><span class="n">Line1</span><span class="p">,</span><span class="n">Line2</span><span class="p">,</span><span class="n">Line3</span><span class="p">,</span><span class="n">kolvo_tovar0</span><span class="p">):</span>
<span class="k">print</span><span class="p">(</span><span class="n">Line1</span><span class="p">)</span>
<span class="n">kolvo_ross</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">kolvo_tovar0</span><span class="p">)</span> <span class="o">-</span> <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">Line1</span><span class="p">)</span> <span class="o">*</span> <span class="nb">int</span><span class="p">(</span><span class="n">Line2</span><span class="p">))</span>
<span class="n">Line3</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">kolvo_ross</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">line2</span><span class="p">(</span><span class="n">Line1</span><span class="p">,</span><span class="n">Line2</span><span class="p">,</span><span class="n">Line3</span><span class="p">,</span><span class="n">kolvo_tovar0</span><span class="p">):</span>
<span class="k">print</span><span class="p">(</span><span class="n">Line2</span><span class="p">)</span>
<span class="n">kolvo_ross</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">kolvo_tovar0</span><span class="p">)</span> <span class="o">-</span> <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">Line1</span><span class="p">)</span> <span class="o">*</span> <span class="nb">int</span><span class="p">(</span><span class="n">Line2</span><span class="p">))</span>
<span class="n">Line3</span><span class="o">.</span><span class="n">setText</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">kolvo_ross</span><span class="p">))</span>
</pre></div>ну и наверно логичнее добавить валидатор еще,так как при очистке поля будет ошибка.
Общий :: GUI :: Автозаполнение поля ввода
2020-10-30T08:50:07+02:00doza_and212804Я думаю что для решения вашей задачи требуется только понимание самых азов разработки GUI а не выискивания специальных элементов.<br/>При редактировании полей возникают события, правильная обработка которых позволит сделать желаемое.<br/>См. Прохоренка про сигналы и слоты.<br/><br/>Ну и чуток здравого смысла. Вот вы одно поле вводите 5 во втором ничего Как вычислить результат? Ввели - это не валидное число (валидно например -50). Что делать?<br/>