python - Tkinter 标签无法显示正确的信息(Win 10 python 3)
问题描述
当用户在 inputField 中键入文件名并单击保存按钮时,我尝试创建一个函数。可以使用新条目名称复制 mdb 文件,并且消息将显示源 => 目标。转到相同的文件名,它将显示文件已存在。但是当我输入新文件名时,单击保存按钮。它总是显示文件已存在。我无法弄清楚我的代码有什么问题。
from tkinter.ttk import *
class View(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.winfo_toplevel().title("Save File")
self.grid()
self.init_view()
def init_view(self):
self.inputText = Label(self)
self.inputText["text"] = "Input Serial ID"
self.inputText.grid(row=0, column=0, sticky=N + E)
self.inputField = Entry(self)
self.inputField["width"] = 20
self.inputField.grid(row=0, column=1, sticky=N + W)
self.save = Button(self)
self.save["text"] = "Save"
self.save.grid(row=1, column=1, sticky=N + W)
self.displayText = Label(self)
self.displayText["text"] = "Status:Idle"
self.displayText.grid(row=3, column=0, columnspan=7, sticky=N)
if __name__ == '__main__':
root = Tk()
app = View(master=root)
root.mainloop()
import shutil
import sys
from datetime import datetime
from Save_Server_View import View
from tkinter import Tk
year = datetime.now().year
month = datetime.now().month
src = r"HIDE FOR PRI"
dir = os.path.dirname(os.path.realpath('__file__'))
dst = os.path.join(dir, ".\\data\\" + str(year) + "\\" + str(month))
# Controller
class Controller:
def __init__(self):
self.app = View(master=Tk())
self.app.save["command"] = self.save_method
self.app.mainloop()
# Copy & Rename File
def save_method(self):
for root, dirs, files in os.walk(src):
for filename in files:
if not os.path.exists(os.path.join(dst)):
message = (os.path.join(dst)), "not found"
self.app.displayText["text"] = message
else:
first_src_file_path = os.path.join(src, '', filename)
new_dst_file_path = os.path.join(dst, '', self.app.inputField.get() + '.mdb')
new_dst_file_name = os.path.basename(new_dst_file_path)
try:
if not os.path.exists(os.path.join(dst, new_dst_file_name)):
shutil.copy(first_src_file_path, new_dst_file_path)
message = 'source={} => destination={}'.format(src, dst)
self.app.displayText["text"] = message
except:
message = "Unexpected error:", sys.exc_info()[0]
self.app.displayText["text"] = message
else:
self.app.displayText["text"] = 'File has existed.'
# Execute
if __name__ == '__main__':
app = Controller()
我除了将文件(使用新名称)复制到目标文件路径时可以显示正确的消息。然后显示'source={} => destination={}'.format(src, dst)'。当目标文件路径中的文件名相同时,它将显示“文件已存在”。
解决方案
单击按钮src
时更新内容。只需在函数的循环save
之前添加以下行。for
save_method
src = self.app.inputField.get()
推荐阅读
- vaadin - Vaadin 10 - 上传组件 - 删除文件事件
- java - 在 Java 中是否可以从对象的构造函数将对象添加到地图中?
- sql-server-2008 - SSIS - 将列元数据从字节流更改为 unicode 字符串
- php - 基于路由创建laravel链接
- html - 在 ionic 3 问题中显示视频
- bootstrap-file-input - Bootstrap FileInput 在初始预览中填充输入值
- swift - Swift 错误消息:“'city' 类型的值没有成员 'id'
- vuelidate - Vuelidate "OR" 验证器示例
- html - Favicon 仅适用于浏览器
- kubernetes - 在配置私有 GKE 集群时了解 --master-ipv4-cidr