我正在寫我的第一個桌面應用程序,我正在努力與類實例。這個程序是一個簡單的FTP程序使用paramiko。到目前爲止我設置的是一個connection.py,看起來像這樣...Paramiko連接問題
#connect.py
import user, db
import paramiko, time, os
paramiko.util.log_to_file('paramiko-log.txt')
class Connection:
def __init__(self):
#Call DB Functions
database = db.Database()
#Set Transport
self.transport = paramiko.Transport((user.hostname, user.port))
#User Credentials
username = user.username
password = user.password
self.transport.connect(username = username, password = password)
self.sftp = paramiko.SFTPClient.from_transport(self.transport)
print "Set your credentials in user.py for now!"
msg = "Connecting as: %s, on port number %d" % (user.username, user.port)
print msg
def disconnect(self):
print "Closing connection..."
self.sftp.close()
self.transport.close()
print "Connection closed."
非常簡單。連接並斷開連接。 這connect.py文件被導入到main.py(這是我的GUI)
#main.py
import connect
from PySide import QtCore, QtGui
class Window(QtGui.QWidget):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
windowWidth = 550
windowHeight = 350
self.establishedConnection = ""
connectButton = self.createButton("&Connect", self.conn)
disconnectButton = self.createButton("&Disconnect", self.disconnect)
grid = QtGui.QGridLayout()
grid.addWidget(connectButton, 3, 3)
grid.addWidget(disconnectButton, 4, 3)
grid.addWidget(self.createList(), 1, 0, 1, 4)
self.setLayout(grid)
self.resize(windowWidth, windowHeight)
self.setWindowTitle("FTP Program")
def conn(self):
connection = connect.Connection()
self.establishedConnection = connection
def disconnect(self):
self.establishedConnection.disconnect()
def createButton(self, text, member):
button = QtGui.QPushButton(text)
button.clicked.connect(member)
return button
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
gui = Window()
gui.show()
sys.exit(app.exec_())
問題被斷開。 我在想__init__
會創建一個Connection()
類的實例。如果你看看main.py,你可以看到我試圖創建變量self.connectionEstablished
以保存對象,以便稍後可以調用斷開連接。
我哪裏錯了?我對python和其他非web語言相當陌生(我花了大部分時間寫RoR和php應用程序)。
任何時候都不會顯示任何錯誤,並且我作爲終端應用程序啓動了此應用程序,所以我確實知道connect.py確實按預期工作。
編輯:所以我想Senderle得到了一個連接關閉的消息,這也是我想看到的,但我不是。如果我看到解決我的問題的東西,我會標記出最佳答案。
編輯解決方案:將connect.py和main.py壓入一個文件以簡化操作。出於某種原因解決了這些問題。所以誰知道發生了什麼。我仍然堅持'最佳答案'。如果有人能告訴我爲什麼我不能有這樣的分割文件,那麼我全都是耳朵。
何時調用conn()? init函數看起來只是將變量設置爲空字符串。除非調用conn(),否則self.establishedConnection永遠不會被設置。 – 2011-01-21 19:19:39
斷開連接的問題究竟是什麼?你說「任何時候都不顯示錯誤」,但是你不會說出哪種方式出了問題。 – sth 2011-01-21 19:20:28
@Karl R:看起來像是通過`connectButton = self.createButton(「&Connect」,self.conn)`小部件調用conn()。 – senderle 2011-01-21 20:50:30