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
答案 0 :(得分:2)
combo1.get()
和entry2.get()
都将返回一个字符串,因此它们都不是== True
。但是,如果不为空,则字符串的求值为True
,因此您可以编写:
if combo1.get():
# etc.
如果字符串为空if
,则False
表达式的值为== ""
,如果字符串包含字符,则表达式的值为True
。
也;不要将根窗口创建为:
root=Toplevel()
因为这还将创建Tk()
的实例。而是使用:
root = Tk()