2014-02-08 78 views
1

我有一個簡單的示例PyQt應用程序與QTabWidget。我不能QTabWidget的tabClos​​eRequested信號連接到插槽,從而使標籤正確關閉:PyQt:正確的方式來連接QTabWidget.tabClos​​eRequested到一個插槽

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

class Application(object): 
    def __init__(self): 
     app = QApplication(sys.argv) 

     self.window = QMainWindow() 

     self.notebook = QTabWidget() 
     self.notebook.tabBar().setTabsClosable(True) 
     self.notebook.tabBar().setMovable(True) 

     self.notebook.tabCloseRequested.connect(self.close_handler) 

     self.window.setCentralWidget(self.notebook) 

     page1 = QWidget() 
     self.notebook.addTab(page1, "page1") 
     page2 = QWidget() 
     self.notebook.addTab(page2, "page2") 

     self.window.show() 
     sys.exit(app.exec_()) 

    def close_handler(self, index): 
     print "close_handler called, index = %s" % index 
     self.notebook.removeTab(index) 

if __name__ == "__main__": 
    app = Application()        

當我點擊關閉按鈕,沒有任何反應。甚至不應該打印,應該被調用!我究竟做錯了什麼?

回答

4

你需要調用setTabsClosable(True)上的標籤,窗口小部件,而不是它的標籤欄:

self.notebook.setTabsClosable(True) 

(PS:在close_handler方法也缺少self參數)。

+0

謝謝,現在它工作!對不起,我錯過了'自我':當我檢查這段代碼時,我在我的機器上修復了這個錯誤,但忘了在這裏複製它。 –