尝试获取FTP地址并使用输入传递给python中的下一个函数

2024-10-03 00:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

对此有异议,我想我会寻求一些建议。我有一个程序,我正在创建这是一个简单的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 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”

请告知


Tags: to代码fromimportselfgetmaindef
1条回答
网友
1楼 · 发布于 2024-10-03 00:22:26

您的代码有几个问题需要解决

我马上看到的第一个问题是您多次使用tkintersTk()。您应该只创建Tk()的一个实例,然后从那里创建FrameToplevel的组合来创建接口的其余部分

接下来不要在这里使用root.wm_withdraw()来掩盖您多次使用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()

相关问题 更多 >