PyQt — изменить размер родительского виджета на дочерний

#python #pyqt

#python #pyqt

Вопрос:

Просто основной виджет с виджетом вкладок в нем.

Проблема в том, что когда я его запускаю, отображается только часть вкладок (как показано на прикрепленном рисунке). Итак, вам нужно изменить размер или прокрутить вкладки, чтобы получить последнюю.

введите описание изображения здесь

Как я могу настроить его так, чтобы в окне отображались все вкладки с самого начала?

 import sys
from PyQt4.QtGui import *

class MainWindow(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        # making tabs
        tabs = QTabWidget()
        tabs.addTab(QWidget(), '111111')
        tabs.addTab(QWidget(), '222222')
        tabs.addTab(QWidget(), '333333')
        tabs.addTab(QWidget(), '444444')

        # inserting in vbox
        vbox = QVBoxLayout(self)
        vbox.addWidget(tabs)

app = QApplication(sys.argv)
myapp = MainWindow()
myapp.show()
sys.exit(app.exec_())
  

Как я могу изменить его размер для всех вкладок?
И в чем проблема — это родительский виджет, или вкладки, или vbox?

Ответ №1:

Вы можете использовать QTabWidget.setUsesScrollButtons(bool)

 import sys
from PyQt4.QtGui import *

class MainWindow(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        # making tabs
        tabs = QTabWidget()
        tabs.setUsesScrollButtons(False) #here is

        tabs.addTab(QWidget(), '111111')
        tabs.addTab(QWidget(), '222222')
        tabs.addTab(QWidget(), '333333')
        tabs.addTab(QWidget(), '444444')
        # inserting in vbox
        vbox = QVBoxLayout(self)
        vbox.addWidget(tabs)

app = QApplication(sys.argv)
myapp = MainWindow()
myapp.show()
sys.exit(app.exec_())
  

http://doc.qt.nokia.com/4.7/qtabwidget.html#usesScrollButtons-prop