Найти - Пользователи
Полная версия: PyQT: QTabWidget и QComboBox
Начало » GUI » PyQT: QTabWidget и QComboBox
1
ktun
Здравствуйте.
есть вопрос как правильно запихать в таб комбобокс или любой другой компонент,

получилось следущее но думаю не правильно)

# -*- coding: utf-8 -*-
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import Qt
class MyWindow(QtGui.QWidget):
	def __init__(self,parent=None):
		QtGui.QWidget.__init__(self, parent)
		self.tab = QtGui.QTabWidget()
		self.comboBox = QtGui.QComboBox()
		self.comboBox.addItem(u"меню")
		self.tab.addTab(QtGui.QComboBox(self.comboBox), u"Вкладка &1")
		self.tab.addTab(QtGui.QComboBox(self.comboBox), u"Вкладка &2")
		self.tab.addTab(QtGui.QComboBox(self.comboBox), u"Вкладка &3")
		vbox = QtGui.QVBoxLayout()
		vbox.addWidget(self.tab)
		self.setLayout(vbox)
		
	@QtCore.pyqtSlot()
	
addItem ни где не виден
reclosedev
По-моему в документации достаточно ясно описано.
http://qt-project.org/doc/qt-5.0/qtabwidget.html#details

В вашем коде комбобокс создается с родителем комбобоксом. Это странно.

Сомневаюсь, что у вас будет один комбобокс в табе, поэтому нужно создать виджет, и с помощью Layout'ов накидать туда контролы. Причем если виджет сложный, и требует особой обработки данных, лучше сделать наследника QWidget.

Вот пример двух способов добавления: через наследника и простым добавлением в layout.
# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
 
# Сложная страница со своей логикой и обработкой сигналов
class ComplexPage(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.button = QtGui.QPushButton("Ok")
        self.combo = QtGui.QComboBox()
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.button)
        layout.addWidget(self.combo)
        self.setLayout(layout)
        #...
 
  
class MainWidget(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.tab_widget = QtGui.QTabWidget(self)
        # добавим сложуню страницу
        self.tab_widget.addTab(ComplexPage(), 'page1')
        # контейнер с виджетами
        container = QtGui.QWidget()
        layout = QtGui.QHBoxLayout()
        # для простоты виджеты добавляются прм в контенер
        layout.addWidget(QtGui.QLabel('Some Label'))
        layout.addWidget(QtGui.QSpinBox())
        # но можно добавить и свои, например, чтобы получать от них сигналы или данные
        self.some_edit = QtGui.QLineEdit()
        layout.addWidget(self.some_edit)
        container.setLayout(layout)
        self.tab_widget.addTab(container, 'page2')
        self.setLayout(QtGui.QVBoxLayout())
        self.layout().addWidget(self.tab_widget)
        #... 
 
         
if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    widget = MainWidget()
    widget.resize(640, 480)
    widget.show()
    sys.exit(app.exec_())
ktun
Большое спасибо.
dervish
спасибо. Помогли ))
Kyrym
Совершенно не понятно, зачем создавать 2 класса, можно и в одном всё сделать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB