2017-07-31 66 views
0
def home(self): 
    btn = QtGui.QPushButton("Log in", self) 
    self.show() 


    if btn.clicked: 
     btn.clicked.connect(btn.deleteLater) 
     self.Page() 
    else: 
     pass 

def Page(self): 
     btn2 = QtGui.QPushButton("Exit", self) 
     self.show() 

很抱歉,如果縮進是不正確的在這裏,但它是在我的Python文件: 所以BTN並刪除被按下時,但頁面功能ISN沒有正確運行,因爲btn2沒有出現。如何從一個類中調用一個函數PyQt4中

這只是粘貼的相關代碼片段。

TIA幫助瞭解爲什麼Page函數沒有運行。我正在使用python 2,7和pyqt4

+0

您可以顯示班級代碼。 – eyllanesc

+0

什麼是'btn.clicked'? – eyllanesc

回答

0

它看起來像btn變量是本地內部home方法。這意味着它只能在這個方法中看到(除非它是在更高級別的範圍外定義的)。

如果你想在一個類的多個方法中共享一個變量,你應該把它作爲一個對象屬性存儲 - 這就是爲什麼你需要一些OOP。例如(假設您的班級定義中有其餘的構成):

class YourApp(object): 
    def __init__(self): 
     # All the preparations should go here. 
     # If self.btn is created later dynamically, 
     # it's still recommended to declare it here 
     # and assign `None` to it 
     self.btn = QtGui.QPushButton("Log in", self) 

    def home(self): 
     # Do stuff with self.btn 
     self.btn.spam() 
     pass 

    def page(self): 
     # Do other stuff with self.btn 
     self.btn.eggs() 
相關問題