1

次の Python スニペットでは、アプリケーションを実行するとクラッシュします。Mac OS X、Windows、および Ubuntu でテストしました。

import sys
from PySide.QtCore import *
from PySide.QtGui import *

class TabbedWindow(QTabWidget):

    def __init__(self):
        super(TabbedWindow, self).__init__()
        self.setWindowTitle(u"Tabs Test")
        self.resize(800, 600)

        self.addTab(QTextEdit(), "Tab 1")
        self.addTab(QCalendarWidget(), "Tab 2")

        self.setTabsClosable(True)

        tabBar = self.tabBar()
        menuButton = QPushButton('')
        menuButton.resize(0,0)
        tabBar.setTabButton(1, QTabBar.RightSide, menuButton)


def main():
    app = QApplication(sys.argv)
    window = QMainWindow()
    tabs = TabbedWindow()
    window.setCentralWidget(tabs)
    window.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

この行を削除するtabBar.setTabButton(1, QTabBar.RightSide, menuButton)と機能します!

また、この行をmain機能するように移動した場合: それも機能します! これをメイン関数に追加したときのことを意味します。

tabBar = tabs.tabBar()
menuButton = QPushButton('')
menuButton.resize(0,0)
tabBar.setTabButton(1, QTabBar.RightSide, menuButton)

私がやりたいのは、一部のタブで閉じるボタンを非表示にすることです。

これを実行するための回避策はありますか?

4

1 に答える 1

6

最後に、それを機能させるための答えを見つけました!

ボタンをクラスのメンバーとして宣言する必要があります。

self.menuButton = QPushButton('')

それ以外の

menuButton = QPushButton('')

誰かがこのソリューションが役立つことを願っています。

于 2013-04-08T08:50:14.897 に答える