0

我制作了一个如下所示的 GUI 应用程序:

我的 GUI 的图片

标记为红色的是 Tkinter Text widgets,标记为黄色的是 TkinterEntry widgets

接受用户输入后,数据将被添加到 PSD 文件中,然后呈现为图像。但是让我们说,在将以下数据作为输入之后:

填充数据

它呈现以下 Photoshop 文件:

生成的处方

如何解决无法"\n"正确识别并因此呈现的文档变得无用的问题。

这是处理将接受的用户数据转换为字符串,然后将其添加到 Photoshop 模板然后渲染它的代码:

def DataAdder2CSV():
    global edate, eSNO, eage, egender, ename, ePID, econtact, ecomp, eallergy, ehistory, eR
    e=edate.get()
    a=eSNO.get()
    d=eage.get()
    f=egender.get()
    b=ename.get()
    c=ePID.get()
    g=econtact.get()
    h=ecomp.get(1.0,END)
    i=eallergy.get(1.0,END)
    j=ehistory.get(1.0,END)
    k=eR.get(1.0,END)
    data=[a,b,c,d,e,f,g,h,i,j,k]
       
    file=open("Patient_Data.csv","a", newline="")
    writer=csv.writer(file, delimiter=",")

    writer.writerow(data)

    file.close()
    messagebox.showinfo("Prescription Generator", "Data has been saved to the database successfully!")
    import win32com.client, os
    objShell = win32com.client.Dispatch("WScript.Shell")
    UserDocs = objShell.SpecialFolders("MyDocuments")
    from tkinter import filedialog

    ExpDir=filedialog.askdirectory(initialdir=UserDocs, title="Choose Destination Folder")

    psApp = win32com.client.Dispatch("Photoshop.Application")
    psApp.Open("D:\Coding\Python Scripts\Dr Nikhil Prescription App\Prescription Generator\Presc_Template.psd")
    doc = psApp.Application.ActiveDocument

    lf1 = doc.ArtLayers["name"]
    tol1 = lf1.TextItem
    tol1.contents = b

    lf2 = doc.ArtLayers["age"]
    tol2 = lf2.TextItem
    tol2.contents = d

    lf3 = doc.ArtLayers["gender"]
    tol3 = lf3.TextItem
    tol3.contents = f

    lf4 = doc.ArtLayers["pid"]
    tol4 = lf4.TextItem
    tol4.contents = c

    lf4 = doc.ArtLayers["date"]
    tol4 = lf4.TextItem
    tol4.contents = e

    lf5 = doc.ArtLayers["contact"]
    tol5 = lf5.TextItem
    tol5.contents = g

    lf6 = doc.ArtLayers["complaint"]
    tol6 = lf6.TextItem
    varH="                       "+h.rstrip("\n")
    tol6.contents =varH

    lf7 = doc.ArtLayers["allergy"]
    tol7 = lf7.TextItem
    tol7.contents = i.rstrip("\n")

    lf8 = doc.ArtLayers["history"]
    tol8 = lf8.TextItem
    varJ="                                              "+j.rstrip("\n")
    tol8.contents =varJ

    lf9 = doc.ArtLayers["R"]
    tol9 = lf9.TextItem
    tol9.contents = k.rstrip("\n")
    options = win32com.client.Dispatch('Photoshop.ExportOptionsSaveForWeb')
    options.Format = 13
    options.PNG8 = False
    pngfile =ExpDir+f"/{c}-{b}_({e}).png"
    doc.Export(ExportIn=pngfile, ExportAs=2, Options=options)
    messagebox.showinfo("Prescription Generator", "Prescription has been saved in the desired location successfully!")
4

1 回答 1

1

换行符有3种表达方式:

  • MacOS 使用\r
  • Linux 使用\n
  • 视窗使用\r\n

Python 和tkinter使用\n,但它看起来像psApp.Application使用\r。这就是文档未正确呈现的原因。有关更多信息,请阅读问题的答案。

于 2021-05-19T18:10:07.827 回答