ブラウザからタブのようなものを実現しようとしています。すべてのタブの幅は同じで、エキスパンドでなければならないため、サイズが大きくてウィンドウのサイズやサイズを変更する必要があります(ChromeやFirefoxのように)。PyQt5 - QTabWidget - すべてのタブを同じ幅で拡張可能にする
問題:
タブは、他のタブを複数のテキストを持っている場合は、タブが大きくなります。これと同じように:私は、タブをたくさん生む場合
そして、それは常に他人その後、大きくなります。
を私は幅を変更するにはスタイルシートを追加しようとしましたが、私は特定の数に幅を変更した場合、タブは次のようになります。私が試してみました何
静的ではなく、ウィンドウのサイズに合わせてタブの数に基づいてサイズを変更しないでください。また、最小/最大幅で微調整しようとしましたが、QSizePolicyを混乱させましたが、チャンスはありませんでした。
私はQT5 for C++のドキュメントを見ていて、たくさんのGoogle検索を行っていますが、これやこれに関するオプションについては語っていません。
おそらく、私はPythonでいくつかの計算を行い、引数としてスタイルシートに追加する必要がありますが、その方法はわかりません。たぶん、私が欠けている簡単なオプションがあります。
マイコード:(これは完全なコードですので、あなたが必要な場合は、コピー&ペーストして、それをテストすることができます)
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QTabWidget,\
QVBoxLayout, QHBoxLayout, QSizePolicy
class Container(QWidget):
def __init__(self, text):
super(Container, self).__init__()
self.hbox = QHBoxLayout()
self.hbox.setSpacing(0)
self.hbox.setContentsMargins(0, 0, 0, 0)
self.setLayout(self.hbox)
self.button = QPushButton(text)
self.hbox.addWidget(self.button)
class CustomWidget (QWidget):
def __init__(self, parent=None):
super(CustomWidget, self).__init__(parent)
self.button = QPushButton("Add tab")
self.button.clicked.connect(self.buttonClicked)
self.tabs = QTabWidget()
self.tabs.setTabsClosable(True)
self.tabs.setMovable(True)
self.tabs.setDocumentMode(True)
self.tabs.setElideMode(Qt.ElideRight)
self.tabs.setUsesScrollButtons(True)
self.tabs.tabCloseRequested.connect(self.closeTab)
self.tabs.addTab(Container("Very big titleeeeeeeeee"),
"Very big titleeeeeeeeeeee")
self.tabs.addTab(Container("smalltext"), "smalltext")
self.tabs.addTab(Container("smalltext2"), "smalltext2")
vbox = QVBoxLayout()
vbox.addWidget(self.button)
vbox.addWidget(self.tabs)
self.setLayout(vbox)
self.resize(600, 600)
def closeTab(self, index):
tab = self.tabs.widget(index)
tab.deleteLater()
self.tabs.removeTab(index)
def buttonClicked(self):
self.tabs.addTab(Container("smalltext2"), "smalltext2")
app = QApplication([])
app.setStyleSheet("""
QTabBar::tab {
background: lightgray;
color: black;
border: 0;
/* min-width: 100px; */
max-width: 200px;
/* width: 150px; */
height: 20px;
padding: 5px;
}
QTabBar::tab:selected {
background: gray;
color: white;
}
""")
widget = CustomWidget()
widget.show()
sys.exit(app.exec_())
その他の情報:
オペレーティングシステム:Windows 10
Pythonのバージョン:3.6.2
PyQtはバージョン:5.9.1
で見つけることができます!ドキュメントの 'tabSizeHint'を見ましたが、使用方法を正確には分からなかったので、今私は知っています。ありがとうございました! –