Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试获取FTP地址并使用输入传递给python中的下一个函数_Python_Oop_Tkinter_Attributes - Fatal编程技术网

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

尝试获取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

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


请告知

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

我马上看到的第一个问题是您多次使用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的新手,你的回答为我澄清了很多事情!!