GUI基本情况
- 连接登录界面
- 若用户名和密码正确,点击连接则进入上传下载界面
tkinter 注意事项
- 按钮事件的command参数如果调用了函数如
command=self.button_on_click()
会直接执行函数,而不是等待按钮被按下才执行,需将其改成command=self.button_on_click
- 如果在类ClientGui的某个函数如
set_init_window()
中定义了一些变量如文本输入框user_name_entry
,同时类中其他函数可能也需要获取这个文本框的数据时,那么在set_init_window()
中定义时,需self.user_name_entry
而不能user_name_entry
解决上传文件的问题
在上传实验中,输入文件名再点击Upload按钮,会报错
ftplib.error_perm: 550 Not enough privileges
如果文件名输错,则会报FileNotFoundError,这是没有问题的
- 发现一个问题,当我通过UI进行登录,点击connect按钮后,在服务端记录到:先有正常的(相当于已注册的用户)登录,随即有匿名用户在同一时间登录
- 而当我使用测试程序进行上传操作时,只有user登录,这个应该就是问题所在了
- 考虑到,在Gui代码中,我先在
connect_button_on_click
函数中调用FTP()
函数,又在创建连接按钮这个组件时,使用command参数将connect_button_on_click
调用了一边,猜想,是因为在此处连接了两遍导致新增匿名用户 - 同时,想到在点击事件的函数中,使用的变量是self的,这其实在某种程度上相当于在类中大家通用的变量。为了只调用一次FTP连接,准备将点击事件函数中新增参数
user_name
和pwd
- 这里回到了旧问题:如果在
command
中包含参数,则不点击按钮也会执行函数。。 - 还是回到了原先的版本。。
- 问题找到了,当看到点击事件函数中被我添加的messagebox时,我悟了,这是又login了一次。所以我将这行注释掉以后,即可正常上传了
打包项目
pyinstaller -D ftpClient
时遇到报错PermissionError: [Errno 13] Permission denied: ‘D:\Projects\PyCharmProjects\ftpClient’
- 以管理员身份运行Anaconda环境未果
pyinstaller -F ftpClientGui.py
是没有问题的
ftpClientGui.py
1 | from tkinter import * |