2014-10-19 3 views
0

asksaveasfilename 대화 상자를 사용하여 텍스트 위젯에 입력 한 내용을 .txt 또는 .doc 형식으로 저장하고 싶습니다. 이것 후에 나는 그것이 resp에서 열리고 싶다. 메모장 또는 MS 워드.asksaveasfile을 사용하여 텍스트 위젯 Tkinter에서 .doc로 텍스트를 저장하는 방법?

from tkFileDialog import asksaveasfilename 
import os.path 

name = asksaveasfilename(
      initialdir="dir", 
      title="Save as", 
      filetypes=[("Text files",".txt"),("Word files",".doc")]) 

data = open(name,"w") 
data.write("text from text widget") 

os.startfile(name) 

파일을 생성하지만 MS Word 나 메모장에서는 열리지 않습니다. 대신이 파일을 어떻게 열지를 묻습니다. 프로그램을 선택하면 올바르게 열리지 만 직접 열려고합니다. (파일을 열 프로그램을 선택하지 않고). "File name :"상자에 직접 확장 기능을 제공하면 원하는 방식으로 작동합니다.

이 작동 : 파일 이름 : something.doc 저장 형식으로 : Word 파일 (* .DOC)를 ---> something.doc를 만들고 MS 워드에서 엽니 다.

하지만하지 않습니다 파일 이름 : 어떤 형식으로 저장 : Word 파일 (* .DOC) 는 ---> 뭔가 (확장자)을 생성하고 나는 그것을 열고 원하는 프로그램에 부탁드립니다.

내가 예를 들어 파이썬 2.7.8, 윈도우 8, 오피스 2010

당신이 print name을 추가하는 경우이 문제를 볼 수 있습니다

답변

0

사용

C:/Users/jsharpe/Downloads/testing 

확장 기능이 추가되지 않았다는 점에 유의하십시오. - 나는 단지 "testing"을 입력했습니다. filetypes 인수는 기존 파일의 사용자 선택을 제한하는 데 더 유용하며 사용자가 파일을 제공하지 않으면 적절한 확장자를 추가하지 않습니다. 당신이 defaultextension=".txt"을 설정하면

당신은 사용자가 내선 번호를 입력하지 않는 경우에 대한 defaultextension을 설정할 수 있지만이 드롭 다운에서 선택한 유형을 반영하지 않습니다 (예를 들어, 그것은 .doc 경우에도하지 않습니다 사용자는 filetypes에서 해당 옵션을 선택합니다.

보조 노트에

name = asksaveasfilename(defaultextension=".txt", 
         filetypes=[("Text files",".txt"), 
            ("Word files",".doc")], 
         initialdir="dir", 
         title="Save as") 

(아직도!), 당신이 (당신이 더 많은 옵션을 추가로 그 알파벳 인수 순서를 참고 생명 쉽게)하지 close 파일, 문제를 일으킬 수있는 - 나는 파일 처리에 대한 with 컨텍스트 매니저 사용하는 것이 좋습니다 것 :

with open(name, "w") as data: 
    data.write("text from text widget") 
+0

를가 큰 부분에서 스 니펫입니다 때문에, 가능성이 나는 실수로 제가 테스트 한, 분명이 같은 다른 코드를 기록했다. 위의 두 코드를 복사하여 붙여 넣으면 결과가 나타납니다. 첫 번째 부분에 대해 가장 확실하게 맞습니다. 나는 파일을 닫는 것을 완전히 잊었다. 하지만 문제를 해결 한 후에도 문제가 발생합니다. 그리고 ... 저는 도움없이 파이썬을 배우기 시작했습니다. 그래서 저는 많은 실수를 범합니다. – Roundhouse

+0

내가 사용하는 물건에 대한 정보를 추가했습니다. 또한 비트가 원본 코드를 나타낼 수 있는지 두 번 확인했습니다. – Roundhouse

+0

흠, 분명히 뭔가 잘못 했어. 원본 스크립트를 실행하면 .txt에도 작동하지 않습니다.(파일을 만들지 만 여전히 programm를 지정해야합니다.) – Roundhouse

0

그냥이 코드를 실행 그것을 작동 :

from tkinter import * 
from tkinter import ttk 
name=[]*1000 
surname=[]*1000 
email=[]*1000 
password=[]*1000 
cpassword=[]*1000 
phonenum=[]*1000 
def mainpage3(): 
    global phonenum 
    global cpassword 
    global password 
    global email 
    global surname 
    global name 
    global page1 
    global bpage 
    global e1 
    global e2 
    global e3 
    global e4 
    global e5 
    global e6 
    name.append(e1.get()) 
    surname.append(e2.get()) 
    email.append(e3.get()) 
    password.append(e4.get()) 
    cpassword.append(e5.get()) 
    phonenum.append(e6.get()) 
    bpage.destroy() 
    cpage=Tk() 
    cpage.title('boors') 
    mainframe = ttk.Frame(cpage, padding="3 3 12 12") 
    mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) 
    mainframe.columnconfigure(0, weight=1) 
    mainframe.rowconfigure(0, weight=1) 
    ttk.Label(cpage,text='نام').grid(column=8,row=1) 
    ttk.Label(cpage,text='نام خانوادگي').grid(column=8,row=2) 
    ttk.Label(cpage,text='ايميل').grid(column=8,row=3) 
    ttk.Label(cpage,text='شماره تلفن').grid(column=8,row=4) 
    ttk.Label(cpage,text=name[0]).grid(column=7,row=1) 
    ttk.Label(cpage,text=surname[0]).grid(column=7,row=2) 
    ttk.Label(cpage,text=email[0]).grid(column=7,row=3) 
    ttk.Label(cpage,text=phonenum[0]).grid(column=7,row=4) 
    ttk.Label(cpage,text='').grid(column=8,row=5) 
    ttk.Button(cpage,text='خريد').grid(column=8,row=6) 
    ttk.Button(cpage,text='فروش').grid(column=8,row=7) 
    ttk.Entry(cpage).grid(column=7,row=6) 
    ttk.Entry(cpage).grid(column=7,row=7) 
    ttk.Label(cpage,text='agah').grid(column=1,row=1) 
    ttk.Label(cpage,text='agah').grid(column=2,row=1) 
    ttk.Label(cpage,text='agah').grid(column=3,row=1) 
    ttk.Label(cpage,text='agah').grid(column=4,row=1) 
    ttk.Label(cpage,text='code').grid(column=5,row=1) 
    ttk.Label(cpage,text='agah').grid(column=1,row=2) 
    ttk.Label(cpage,text='agah').grid(column=2,row=2) 
    ttk.Label(cpage,text='agah').grid(column=3,row=2) 
    ttk.Label(cpage,text='agah').grid(column=4,row=2) 
    ttk.Label(cpage,text='1').grid(column=5,row=2) 
    ttk.Label(cpage,text='agah').grid(column=1,row=3) 
    ttk.Label(cpage,text='agah').grid(column=2,row=3) 
    ttk.Label(cpage,text='agah').grid(column=3,row=3) 
    ttk.Label(cpage,text='agah').grid(column=4,row=3) 
    ttk.Label(cpage,text='2').grid(column=5,row=3) 
    ttk.Label(cpage,text='agah').grid(column=1,row=4) 
    ttk.Label(cpage,text='agah').grid(column=2,row=4) 
    ttk.Label(cpage,text='agah').grid(column=3,row=4) 
    ttk.Label(cpage,text='agah').grid(column=4,row=4) 
    ttk.Label(cpage,text='3').grid(column=5,row=4) 
    ttk.Label(cpage,text='agah').grid(column=1,row=5) 
    ttk.Label(cpage,text='agah').grid(column=2,row=5) 
    ttk.Label(cpage,text='agah').grid(column=3,row=5) 
    ttk.Label(cpage,text='agah').grid(column=4,row=5) 
    ttk.Label(cpage,text='4').grid(column=5,row=5) 
    ttk.Label(cpage,text='اخبار').grid(column=3,row=6) 
    ttk.Label(cpage,text=' بگو آگاه اخبار').grid(column=3,row=7) 
    ttk.Label(cpage,text='  ').grid(column=2,row=6) 
def mainpage2(): 
    global e1 
    global e2 
    global e3 
    global e4 
    global e5 
    global e6 
    global bpage 
    page1.destroy() 
    bpage=Tk() 
    bpage.title('boors') 
    bpage.geometry('1000x1000') 

    mainframe = ttk.Frame(bpage, padding="3 3 12 12") 
    mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) 
    mainframe.columnconfigure(0, weight=1) 
    mainframe.rowconfigure(0, weight=1) 
    ttk.Label(bpage,text='').grid(column=1,row=1,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=3,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=4,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=6,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=7,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=9,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=10,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=12,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=13,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=15,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=16,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=18,sticky=E) 
    ttk.Label(bpage,text='').grid(column=1,row=19,sticky=E) 
    ttk.Label(bpage,text='Name',font='Verdana 25 bold').grid(column=1,row=2,sticky=E) 
    e1=ttk.Entry(bpage,width=100) 
    e1.grid(column=2,row=2,sticky=E) 
    ttk.Label(bpage,text='Surname',font='Verdana 25 bold').grid(column=1,row=5,sticky=E) 
    e2=ttk.Entry(bpage,width=100) 
    e2.grid(column=2,row=5,sticky=E) 
    ttk.Label(bpage,text='Email',font='Verdana 25 bold').grid(column=1,row=8,sticky=E) 
    e3=ttk.Entry(bpage,width=100) 
    e3.grid(column=2,row=8,sticky=E) 
    ttk.Label(bpage,text='Password',font='Verdana 25 bold').grid(column=1,row=11,sticky=E) 
    e4=ttk.Entry(bpage,width=100) 
    e4.grid(column=2,row=11,sticky=E) 
    ttk.Label(bpage,text='confirm password',font='Verdana 25 bold').grid(column=1,row=14,sticky=E) 
    e5=ttk.Entry(bpage,width=100) 
    e5.grid(column=2,row=14,sticky=E) 
    ttk.Label(bpage,text='phone number',font='Verdana 25 bold').grid(column=1,row=17,sticky=E) 
    e6=ttk.Entry(bpage,width=100) 
    e6.grid(column=2,row=17,sticky=E)  
    ttk.Button(bpage,text='done',width=100,command=mainpage3).grid(column=2,row=20,sticky=E) 

def mainpage(): 
    global page1 
    page1=Tk() 
    page1.title('bours') 
    mainframe = ttk.Frame(page1, padding="3 3 12 12") 
    mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) 
    mainframe.columnconfigure(0, weight=1) 
    mainframe.rowconfigure(0, weight=1) 
    ttk.Label(page1,text='Register Here',font = "Verdana 80 bold").grid(column=1,row=2) 
    ttk.Label(page1,text='',font='Verdana 30 bold').grid(column=1,row=1,sticky=E) 
    ttk.Button(page1,text='register',width=170,command=mainpage2).grid(column=1,row=4,sticky=E) 
    ttk.Label(page1,text='',font='Verdana 30 bold').grid(column=1,row=3,sticky=E) 
mainpage() 
+0

코드 만 대답하면 안됩니다. 왜이 코드가 작동하는지 설명해 주시겠습니까? 이렇게하면 미래의 사용자가이를 유용한 솔루션으로 식별 할 수 있습니다. – parakmiakos

관련 문제