我正在写我的第一个桌面应用程序,我正在努力与类实例。这个程序是一个简单的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