如何使用class和self来获取两个不同的条目?

时间:2018-02-15 08:02:21

标签: python class tkinter self

使用我当前的代码,无论我是否点击"输入文件夹" - 改变或" JukeBox"改变结果总是显示在" JukeBox"条目。这是不正确的,使用class和self如何更改代码以显示"输入文件夹" - 更改"输入文件夹"来自" Jukbox"的结果和结果 - 改变" Jukebox"条目?

另外,如何将所选文件夹保存到文件中,以便它在应用程序退出时重新打开?

我的代码:

import os
from tkinter import *
from tkinter import filedialog

inPut_dir = ''
jukeBox_dir = ''

def inPut():
    opendir = filedialog.askdirectory(parent=root,initialdir="/",title='Input Folder')
    inPut_dir = StringVar()
    inPut_dir = os.path.abspath(opendir)
    entry.delete(0, END)
    entry.insert(0, inPut_dir)

def jukeBox():
    opendir = filedialog.askdirectory(parent=root,initialdir="/",title='JukeBox')
    jukeBox_dir = StringVar()
    jukeBox_dir = os.path.abspath(opendir)
    entry.delete(0, END)
    entry.insert(0, jukeBox_dir)    

root = Tk()
root.geometry("640x240")
root.title("Settings")

frametop = Frame(root)
framebottom = Frame(root)
frameright = Frame(framebottom)

text = Label(frametop, text="Input Folder").grid(row=5, column=2)
entry = Entry(frametop, width=50, textvariable=inPut_dir)
entry.grid(row=5,column=4,padx=2,pady=2,sticky='we',columnspan=20)
text = Label(frametop, text="JukeBox").grid(row=6, column=2)
entry = Entry(frametop, width=50, textvariable=jukeBox_dir)
entry.grid(row=6,column=4,padx=2,pady=2,sticky='we',columnspan=20)

ButtonA = Button(frametop, text="Change", command=inPut).grid(row=5, column=28)
ButtonB = Button(frametop, text="Change", command=jukeBox).grid(row=6, column=28)
ButtonC = Button(frameright, text="OK").grid(row=5, column=20, padx=10)
ButtonD = Button(frameright, text="Cancel").grid(row=5, column=15)

frametop.pack(side=TOP, fill=BOTH, expand=1)
framebottom.pack(side=BOTTOM, fill=BOTH, expand=1)
frameright.pack(side=RIGHT)

root.mainloop()

参见附图:enter image description here

1 个答案:

答案 0 :(得分:1)

您的代码同时包含:

entry = Entry(frametop, width=50, textvariable=inPut_dir)
entry.grid(row=5,column=4,padx=2,pady=2,sticky='we',columnspan=20)

entry = Entry(frametop, width=50, textvariable=jukeBox_dir)
entry.grid(row=6,column=4,padx=2,pady=2,sticky='we',columnspan=20)

使用jukeBox_dir / row 6覆盖inPut_dir / row 5

因此,def input: 你在哪里:

entry.insert(0, inPut_dir)

您将在第5行(jukebox_dir)

中获得结果