Попытка получить адрес FTP и использовать ввод для перехода к следующей функции в Python - PullRequest
0 голосов
/ 01 июня 2018

Возникла проблема с этим, и я подумал, что я буду искать совет.У меня есть программа, которую я создаю, которая является простым клиентом входа по 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 import *

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'.

Пожалуйста, сообщите!

1 Ответ

0 голосов
/ 01 июня 2018

В вашем коде есть несколько проблем для решения.

Первая проблема, которую я сразу вижу, - это использование вами tkinters Tk() более одного раза.Вам следует создать только один экземпляр Tk(), а затем использовать комбинацию Frame и Toplevel для создания остальной части вашего интерфейса.

Далее не используйте здесь 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...