我正在尝试打开一个文件名已创建的文件,方法是在附加ttk.Entry
的{{1}}中输入该文件。
如果我通过在另一个文件夹中键入相同的文件名来再次尝试Tkinter.StringVar
该文件
如果我使用德语'Umlaute',则输入失败。
我从open()
- utf-8
的方法中获得.get()
个编码字符串。
当我列出当前工作目录中的文件时,它们不是StringVar
编码的。 (我正在使用Windows 7!)
如何处理?
答案 0 :(得分:1)
# -*- coding: utf-8 -*-
import Tkinter as tk
import ttk
import sys
import os
from pprint import pprint
import pickle
class TestApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.varFilename = tk.StringVar()
self.etyFilename = ttk.Entry(master=self, textvariable=self.varFilename)
self.frmBtn = ttk.Frame(master=self)
self.btnSave = ttk.Button(master=self.frmBtn, text='Save',
command=self.save)
self.btnOpen = ttk.Button(master=self.frmBtn, text='Open',
command=self.openFile)
self.etyFilename.grid(row=0, column=0, sticky=tk.EW, padx=3, pady=3)
self.frmBtn.grid(row=1, column=0, sticky=tk.EW)
self.btnSave.grid(row=0, column=0, sticky=tk.SE, padx=3, pady=3)
self.btnOpen.grid(row=0, column=1, sticky=tk.SE, padx=3, pady=3)
self.mainloop()
def save(self, *args):
someData = {'foo': 'bar'}
filename = self.varFilename.get()
try:
with open(filename, 'wb') as f:
pickle.dump(someData, f)
except IOError, e:
print e
sys.exit(1)
def openFile(self, *args):
filename = self.varFilename.get()
print filename
print 'Files in cwd:'
pprint(os.listdir(os.getcwd()))
try:
with open(filename, 'rb') as f:
someData = pickle.load(f)
print someData
except IOError, e:
print e
sys.exit(1)
TestApp()