如何将现有的文本文件数据传输到另一个文本文件,或者创建和写入该文本文件并将数据传输到另一个文本文件?

时间:2019-08-12 09:00:51

标签: python-3.x tkinter combobox tkinter-entry

a)我有一个组合框(下拉列表中现有文本文件),我想从下拉列表中选择文本文件并从中读取行,然后将选择行转移到另一个文本文件中。 b)我有一个条目(entry2),我想通过从该条目(entry2)取其名称并在新创建的文本文件中写入一些数据(来自entry3)来创建文本文件。最后,我想将数据从新创建的文本文件传输到另一个文本文件。

上面a)和b)中提到的“另一个文本文件”不过是同一个文件。因此,基本上a)或b)都会是这种情况。我可以一次执行一次a)和b),但是我想将两者结合起来,例如如果有组合框选择,则执行a)或如果entry2存在,则执行b)。

这是我尝试过的方法,我不确定用combo1.get()== True和entry2.get()== True循环是否有效。

from tkinter import *
from tkinter import Button
from tkinter import font
from tkinter.ttk import Combobox
import os 

root=Toplevel()
root.state('zoomed')

bold20= font.Font(family='Times', size=18)
bold15= font.Font(family='Times', size=15)
bold30= font.Font(family='Times', size=30, weight='bold')
boldunderline30= font.Font(family='Times', size=30, weight='bold', underline=True)

topFrame = Frame(root, width=10000, height=500, relief= "raised", borderwidth=3)
topFrame.pack(expand=True, fill='both')

label4= Label(topFrame, text="Choose from the existing files:", font=bold20)
label4.grid(row=3, column=3, padx=400, pady=10, sticky=W)

label8= Label(topFrame, text="Store it in new file:", font=bold20)
label8.grid(row=7, column=3, padx=400, pady=10, sticky=W)

label7= Label(topFrame, text="New File:", font=bold20)
label7.grid(row=6, column=3, padx=400, pady=10, sticky=W)

entry3=Entry(topFrame)
entry3.grid(row=7, column=3, padx=750, pady=10, sticky=W)

OC_data=os.listdir("C:\Fourth Term @ Dal\Project\Collaboration\Sensitivity analysis\GUI\Cash Models\Operating Characteristics")
combo1= Combobox(topFrame, values=OC_data, width="30")
combo1.grid(row=3, column=3, padx=750, pady=10, sticky=W)

entry_field_variable = StringVar()
entry2 = Entry(topFrame, textvariable=entry_field_variable)
entry2.grid(row=6, column=3, padx=750, pady=10, sticky=W)

def save():
    file_name1= combo1.get()
    file_name2= entry2.get()
    if combo1.get()==True:
        existing_file= open("C:\Fourth Term @ Dal\Project\Collaboration\Sensitivity analysis\GUI\Cash Models\Operating Characteristics\\"+file_name1, 'r')
        line1=existing_file.readlines() 
        with open('C:\Fourth Term @ Dal\Project\Collaboration\Sensitivity analysis\GUI\Cash Models\Other data\IIL & Cap.txt', 'w') as i:
            i.write(str(line1[0][10:]))
            i.close()
    if entry2.get()==True:
        with open('C:\Fourth Term @ Dal\Project\Collaboration\Sensitivity analysis\GUI\Cash Models\Operating Characteristics\\'+file_name2+ '.txt', 'w') as f:
            f.write("Capacity: " + entry3.get())
            f.close()
        new_file=open("C:\Fourth Term @ Dal\Project\Collaboration\Sensitivity analysis\GUI\Cash Models\Operating Characteristics\\"+file_name2 + '.txt', 'r')
        line2=new_file.readlines()
        with open('C:\Fourth Term @ Dal\Project\Collaboration\Sensitivity analysis\GUI\Cash Models\Other data\IIL & Cap.txt', 'w') as i:
            i.write(str(line2[0][10:]))
            i.close()
savebutton = Button(topFrame, borderwidth=2, bg="skyblue", text="Save info.", font=bold20, width=10, pady=5, command=save)
savebutton.grid(row=14, column=3, padx=700, pady=30, sticky=W) 

root.mainloop()

我希望上述问题能很好地传达。如果您中的任何人不介意只看它,TIA:)enter code here

1 个答案:

答案 0 :(得分:2)

combo1.get()entry2.get()都将返回一个字符串,因此它们都不是== True。但是,如果不为空,则字符串的求值为True,因此您可以编写:

if combo1.get():
    # etc.

如果字符串为空if,则False表达式的值为== "",如果字符串包含字符,则表达式的值为True

也;不要将根窗口创建为:

root=Toplevel()

因为这还将创建Tk()的实例。而是使用:

root = Tk()