Автор Тема: python i QVBoxLayout  (Прочетена 7325 пъти)

edmon

  • Напреднали
  • *****
  • Публикации: 44
    • Профил
python i QVBoxLayout
« -: Jan 28, 2017, 22:53 »
Имам два работещи примера за ComboBox, в единият има QVBoxLayout в другият няма. Искаше ми се да преправя този с
Лейаут, като го махна или като му променя размера, но когато го направя накрая не излиза нищо в прозореца.
Ето двата примерни кода:

Код:
#!/usr/bin/env python
#
# [SNIPPET_NAME: Combo Box Basic]
# [SNIPPET_CATEGORIES: PyQt4]
# [SNIPPET_DESCRIPTION: An basic example of a combo box]
# [SNIPPET_AUTHOR: Darren Worrall <dw@darrenworrall.co.uk>]
# [SNIPPET_LICENSE: GPL]
# [SNIPPET_DOCS: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qcombobox.html]

# example comboboxbasic.py

import sys
from PyQt4 import QtGui, QtCore

class ComboBoxBasic(QtGui.QWidget):
    """
    An basic example combo box application
    """

    def __init__(self):
        # create GUI
        QtGui.QMainWindow.__init__(self)
        self.setWindowTitle('Combo Box Basic')
        # Set the window dimensions
        self.resize(250,50)
       
        # vertical layout for widgets
        self.vbox = QtGui.QVBoxLayout()
        self.setLayout(self.vbox)

        # Create a combo box and add it to our layout
        self.combo = QtGui.QComboBox()
        self.vbox.addWidget(self.combo)

        # A label to display our selection
        self.lbl = QtGui.QLabel('Ubuntu')
        # Center align text
        self.lbl.setAlignment(QtCore.Qt.AlignHCenter)
        self.vbox.addWidget(self.lbl)

        # You can add items individually:
        self.combo.addItem('Ubuntu')
        self.combo.addItem('Fedora')

        # Or add a sequence in one call
        distrolist = ['Linux Mint', 'Gentoo', 'Mandriva']
        self.combo.addItems(distrolist)
       
        # Connect the activated signal on the combo box to our handler.
        # This is an overloaded signal, meaning there are variants of it, for
        # example the activated(int) variant emits the index of the chosen
        # option, rather than it's text
        self.connect(self.combo, QtCore.SIGNAL('activated(QString)'), self.combo_chosen)

    def combo_chosen(self, text):
        """
        Handler called when a distro is chosen from the combo box
        """
        self.lbl.setText(text)


# If the program is run directly or passed as an argument to the python
# interpreter then create a ComboBoxBasic instance and show it
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    gui = ComboBoxBasic()
    gui.show()
    app.exec_()

и

Код:
#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
ZetCode PyQt4 tutorial

This example shows
how to use QtGui.QComboBox widget.
 
author: Jan Bodnar
website: zetcode.com
last edited: September 2011
"""

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):
   
    def __init__(self):
        super(Example, self).__init__()
       
        self.initUI()
       
    def initUI(self):     

        self.lbl = QtGui.QLabel("Ubuntu", self)

        combo = QtGui.QComboBox(self)
        combo.addItem("Ubuntu")
        combo.addItem("Mandriva")
        combo.addItem("Fedora")
        combo.addItem("Red Hat")
        combo.addItem("Gentoo")

        combo.move(50, 50)
        self.lbl.move(50, 150)

        combo.activated[str].connect(self.onActivated)       
         
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QtGui.QComboBox')
        self.show()
       
    def onActivated(self, text):
     
        self.lbl.setText(text)
        self.lbl.adjustSize() 
               
def main():
   
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

Нещо не разбирам кое как става...
Ако коментирам редовете свързани с лейаута като
 
Код:
  self.vbox = QtGui.QVBoxLayout()
        self.setLayout(self.vbox)

Какво трябва да добавя , за да има все пак изобразен КомбоБокс?

ПС. Това са ми първи опити с Питон.
« Последна редакция: Jan 28, 2017, 22:55 от edmon »
Активен

growchie

  • Напреднали
  • *****
  • Публикации: 623
    • Профил
Re: python i QVBoxLayout
« Отговор #1 -: Jan 29, 2017, 14:32 »
Нарисувай си интерфейса с QtDesigner-а и си конвертирай след това файла до питонски код с pyuic4 some.ui -o some.py. После си ползвай нещата както е описано тук http://askubuntu.com/questions/264037/how-to-use-qt-creator-with-python
Никога не съм се занимавал с питонското Qt, но в С++ версията му за всеки обект трябва да си имаш parent. Не знам как е в питона, но ако комбо бокса ти не е с правилния парент няма да се изчертае.
Не знам каква представа имаш от Qt като цяло, но трябва да знаеш, че лейаутите се ползват за автоматично преоразмеряване на интерфейса при промяна на размера на прозореца. Те си имат пропъртита, които трябва да си ги разучиш. Най-елементарно става с дизайнера.
Активен

edmon

  • Напреднали
  • *****
  • Публикации: 44
    • Профил
Re: python i QVBoxLayout
« Отговор #2 -: Feb 01, 2017, 01:06 »
Благодаря за насоките.
Не искам с дизайнера, защото си мисля, че ще станат много сложни нещата,
а аз искам един комбобокс, един лейбъл, един бутон и евентуално някъде да се изпишат едни неща.....
И ми се искаше да мога по-ефективно да ги контролирам ....
НЯмам никакъв опит нито с QT нито с Питон:) тва съм си го наумил като проект с който да се понауча. :)
Активен

growchie

  • Напреднали
  • *****
  • Публикации: 623
    • Профил
Re: python i QVBoxLayout
« Отговор #3 -: Feb 01, 2017, 11:38 »
Така както ми ги описваш нещата ще е по-удачно да ползваш не QVBoxLayout, а QGridLayout http://doc.qt.io/qt-5/qgridlayout.html Освен това запознай се и с това http://doc.qt.io/qt-5/layout.html.
Мога да ти дам примерен код на с++, който се генерира от uic препроцесора, но не знам колко ще ти е интересно (като го погледнеш, ще се убедиш, че с дизайнера е по-лесно :) ).
Имай в предвид обаче, че да учиш питон и КюТе едновременно може да ти дойде малко нагоре. Qt е не само графичен фреймуърк, пълен е с доста абстракции и ще ти се отиде повече време да се занимаваш с неговите особености, а не да учиш питон. Освен това забелязвам, че семпълите ти са за qt4, а в момента най-новата версия е 5.7 и 4 е депрекирана.  Виж тук http://zetcode.com/gui/pyqt5/ може да ти е по-полезно от връзките към официалното qt.
Активен

edmon

  • Напреднали
  • *****
  • Публикации: 44
    • Профил
Re: python i QVBoxLayout
« Отговор #4 -: Feb 04, 2017, 10:03 »
За PyQT5 разбрах, че трябва аз да си компилирам нещо и понеже мисля да използвам и Виндовс за разработката не ми се занимава да се уча как се компилира и там. За това по-старата версия, за която има и повече примери.
Активен

growchie

  • Напреднали
  • *****
  • Публикации: 623
    • Профил
Re: python i QVBoxLayout
« Отговор #5 -: Feb 05, 2017, 10:43 »
Еми не знам точно какво има да се прави за уиндолз, но основната причина да ползвам Qt е точно междуплатформеността му (в интерес на истината нещата си ги пиша на macOS и после просто си прекомпилирам върху виртуалката с бодзицата). С с++ нещата са лесни - имаш си QtCreator и там нещата са платформено решени. Имай се пак в предвид, че Qt4 е депрекиран.
Активен

bvbfan

  • Напреднали
  • *****
  • Публикации: 1056
  • Distribution: KaOS
  • Window Manager: Plasma 5
    • Профил
Re: python i QVBoxLayout
« Отговор #6 -: Feb 05, 2017, 13:21 »
Не разбрах какво мислиш, че се компилира и защо ще ползваш Виндовс? Слагай кода си в тагове code=python в квадратни скоби, ползвай Qt5 и когато махаш layout няма да даваш setLayout, директно си инстанцираш ComboBox-a както в първият пример.
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 6151
    • Профил
Re: python i QVBoxLayout
« Отговор #7 -: Feb 05, 2017, 14:21 »
Да учиш Python чрез QT не е най-добрата идея. Аз се опитвам да уча Python-а и още не съм стигнал до GUI библиотеките. А и нямам намерение скоро да започвам. Мога доста по-интересни неща да се правя, вместо да чертая прозорци.

Можеш да попиташ за помощ и тук: https://python-forum.io/
« Последна редакция: Feb 05, 2017, 14:26 от 4096bits »
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

growchie

  • Напреднали
  • *****
  • Публикации: 623
    • Профил
Re: python i QVBoxLayout
« Отговор #8 -: Feb 05, 2017, 15:39 »
Един тролски въпрос който е леко оффтопик.
Защо се занимавате изобщо с питон-а, а не с неща като go  например? Ако е интерес от гледна точка намиране на работа разбирам и това не подлежи на коментар, но ако е за удоволствие...
Лично на мен go и джаваскрипт с нод.джиес са ми по-забавни.
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 6151
    • Профил
Re: python i QVBoxLayout
« Отговор #9 -: Feb 05, 2017, 17:17 »
Защо ли?! Честно, нямам представа. Да уточня, че не съм програмист. Дейността ми в съвсем различна посока. Стана ми интересно, че се ползва за толкова много неща, та и за плъгинчета на Блендер, Мах и други подобни графични приложения. Та и за какво ли не още. Но интереса ми тръгна най-вече от графичните програмки. Аз не се занимавам с тях, но покрай едно аверче. Харесва ми и лекотата с която се пише. Няма скоби навсякъде. След като си направих някои неща, най-вече за следене на туй-онуй по машината, едно елементарно и смешно плеърче за музика, малко нещо дето да ми оправя имената на mp3-ите, изкормих няколко сайта, забавата стана пълна. Най вече със сайтовете. Бих се занимавал и с Go, просто няма време за всичко. След като поусвоя питоня, мисля да поусвоя и JS, да си припомня CSS, HTML. Може би след това ще мога да обърна внимание и на нещо като Go. Там все още липсват достатъчно библиотеки. Трябва му време на този език. А и някои неща се правят по странен начин.
В най-близко бъдеще очаквам питона доста да ми улесни работата, та просто ще трябва да го поназнайвам.
« Последна редакция: Feb 05, 2017, 17:19 от 4096bits »
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

growchie

  • Напреднали
  • *****
  • Публикации: 623
    • Профил
Re: python i QVBoxLayout
« Отговор #10 -: Feb 05, 2017, 18:42 »
Стана ми интересно, че се ползва за толкова много неща, та и за плъгинчета на Блендер, Мах и други подобни графични приложения.
Мда, това е доста добра причина да се научи скриптов език. Един познат правеше една игра на блендър (май я направи вече и я пусна в стийма) и нещата си ги правеше на питон.
Активен

edmon

  • Напреднали
  • *****
  • Публикации: 44
    • Профил
Re: python i QVBoxLayout
« Отговор #11 -: Feb 06, 2017, 22:43 »
Един тролски въпрос който е леко оффтопик.
Защо се занимавате изобщо с питон-а, а не с неща като go  например? Ако е интерес от гледна точка намиране на работа разбирам и това не подлежи на коментар, но ако е за удоволствие...
Лично на мен go и джаваскрипт с нод.джиес са ми по-забавни.

За работа предимно, много време съм се чудил, защо по-дяволите в училищата и университетите не учат децата на практични работи, ами ги занимават с някакви абстракции... ей го ... днес е поредният ден от хиляди дни, в който това, че знам че синус х на квадрат + косинус х на квадрат е равно на единица не ми върши НИКАКВА РАБОТА, за да обядвам!!!
Активен

edmon

  • Напреднали
  • *****
  • Публикации: 44
    • Профил
Re: python i QVBoxLayout
« Отговор #12 -: Feb 06, 2017, 22:45 »
Не разбрах какво мислиш, че се компилира и защо ще ползваш Виндовс? Слагай кода си в тагове code=python в квадратни скоби, ползвай Qt5 и когато махаш layout няма да даваш setLayout, директно си инстанцираш ComboBox-a както в първият пример.

https://www.riverbankcomputing.com/software/pyqt/download

Binary installers for Windows are no longer provided.

На личният ми лаптоп имам Линукс, но на служебния съм принуден да използвам Уиндовс за да съм .... compliance
« Последна редакция: Feb 06, 2017, 22:52 от edmon »
Активен

edmon

  • Напреднали
  • *****
  • Публикации: 44
    • Профил
Re: python i QVBoxLayout
« Отговор #13 -: Feb 06, 2017, 23:04 »
Не разбрах какво мислиш, че се компилира и защо ще ползваш Виндовс? Слагай кода си в тагове code=python в квадратни скоби, ползвай Qt5 и когато махаш layout няма да даваш setLayout, директно си инстанцираш ComboBox-a както в първият пример.


Би ли бил така добър да махнеш от кода вертикалния бокс и пак да работи скрипта и да го споделиш де, за да мога да направя разлика и така де .. чета си тук една книжка по въпроса и започвам да се ориентирам, но когато има примери е по-лесно.
Активен

growchie

  • Напреднали
  • *****
  • Публикации: 623
    • Профил
Re: python i QVBoxLayout
« Отговор #14 -: Feb 07, 2017, 10:36 »

За работа предимно, много време съм се чудил, защо по-дяволите в училищата и университетите не учат децата на практични работи, ами ги занимават с някакви абстракции... ей го ... днес е поредният ден от хиляди дни, в който това, че знам че синус х на квадрат + косинус х на квадрат е равно на единица не ми върши НИКАКВА РАБОТА, за да обядвам!!!

Недей така, защото в моята работа без синусите и косинусите съм за никъде. За математиката недей да се оплакваш. Това е все едно азбуката на инженера. Ако не я знаеш си неграмотен. Виждам, че те кефи да програмираш. Ще ти се наложи да се занимаваш с графика и там да преминеш от една координатна система в друга. Няма кой да те спаси в този случай. "Полезните" неща се учат след средното образование. До тогава е добре да имаш по-широка обща култура.
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Коренуване при python
Общ форум
ko_drugo 3 5802 Последна публикация Feb 18, 2007, 00:21
от ko_drugo
Интернет програмиране с python
Web development
IvanX 14 10039 Последна публикация Aug 07, 2011, 01:24
от b2l
Пакетиране на python скрипт
Общ форум
pink 0 2914 Последна публикация Jul 12, 2007, 15:34
от pink
Python 3.1.2
Настройка на програми
fatalerrorbg 10 4988 Последна публикация Aug 30, 2010, 14:39
от bop_bop_mara
Проблем с Python
Настройка на програми
f1r3fl3x 4 3827 Последна публикация Jun 23, 2011, 22:25
от f1r3fl3x