尝试获取FTP地址并使用输入传递给python中的下一个函数
对此有异议,我想我会寻求一些建议。我有一个程序,我正在创建一个简单的ftp登录客户端。以下是我一直使用的代码: 主模块的代码格式:尝试获取FTP地址并使用输入传递给python中的下一个函数,python,oop,tkinter,attributes,Python,Oop,Tkinter,Attributes,对此有异议,我想我会寻求一些建议。我有一个程序,我正在创建一个简单的ftp登录客户端。以下是我一直使用的代码: 主模块的代码格式: from ftplib import FTP import os from TKPractice import tk_method def main(): P = tk_method() print('Welcome to the FTP Directory Transfer Tool.') print('You can use t
from ftplib import FTP
import os
from TKPractice import tk_method
def main():
P = tk_method()
print('Welcome to the FTP Directory Transfer Tool.')
print('You can use this program to move Directories from one platform to
another')
Connect(P)
def Connect(P):
pingstatus = P.GETFTP()
以及我创建的类中的代码:
从tkinter进口*
class tk_method(Tk):
def __init__(self):
Tk.__init__(self)
def FTPSUBMIT(self):
self.ftpentry = self.ftpentry.get()
def GETFTP(self):
root = Tk()
root.title('GETFTP')
root.wm_withdraw()
self.ftpentry = Entry(self)
self.submit = Button(self, text='Submit', command = self.FTPSUBMIT)
self.submit.pack()
self.ftpentry.pack()
root.mainloop()
if __name__ == '__main__':
root = Tk()
run = tk_method()
root.mainloop()
root.wm_withdraw()
我得到的错误是self.ftpentry=self.ftpentry.get()
AttributeError:“str”对象没有属性“get”
请告知 您的代码有几个问题需要解决 我马上看到的第一个问题是您多次使用tkinters
Tk()。您应该只创建Tk()
的一个实例,然后从那里创建Frame
和Toplevel
的组合来创建界面的其余部分
接下来,不要在此处使用root.wm_-draw()
多次使用Tk()
来掩盖您看到的问题。请记住,任何超过mainloop()
的程序都不会运行,除非您关闭程序,否则该行在这里是无用的
在大多数情况下,这段代码可以减少很多,一个更干净的版本应该是这样的
import tkinter as tk
class tkMethod(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.title('GETFTP')
self.ftpentry = tk.Entry(self)
self.submit = tk.Button(self, text='Submit', command=self.do_something)
self.submit.pack()
self.ftpentry.pack()
def do_something(self):
x = self.ftpentry.get()
# do something with x.
if __name__ == '__main__':
run = tkMethod()
run.mainloop()
错误消息似乎是不言自明的:self.ftpentry
是一个str
self.ftpentry=self.ftpentry.get()
那么FTPSUBMIT的命令有一些问题。首先,您使用的是return
,它将向按钮返回一些值,这在这里绝对没有用。接下来,您要将输入字段的变量名更改为不再引用输入字段小部件,而是从该小部件获取的文本字符串。因此,这没有帮助。我也尝试将self.ftpentry设置为不同的值,但是运气不好。我需要有一种方法来访问输入到Entry的字符串,并在输入ftp地址时在主模块中使用它。我看到的另一个问题是root.wm_draw()
。你为什么这么做?你永远不会看到你的按钮或输入框。迈克-非常感谢你的回复!我是Tk的新手,你的回答为我澄清了很多事情!!