第一个输入不起作用,第二个输入将不与TKinter保持一致
在我的代码中,文件夹选择正在工作,并且在工作中也是第二个输入,但是我无法将第一个输入工作或将第二个输入与文件夹选择对齐。我只需要提交一个输入,我可以进一步显示输入项目。
import tkinter as tk
from tkinter import *
from tkinter import ttk
from tkinter import filedialog, simpledialog
from tkinter.messagebox import showinfo
gui = Tk()
gui.geometry("400x200")
gui.title("Test")
status = Label(gui, text="", relief=FLAT)
status.grid(row=6, column=0, columnspan=3, sticky=W+E)
frame = Frame(gui)
class FolderSelect(Frame):
def __init__(self,parent=None,folderDescription="",**kw):
Frame.__init__(self,master=parent,**kw)
self.folderPath = StringVar()
self.lblName = Label(self, text=folderDescription)
self.lblName.grid(row=0,column=0)
self.entPath = Entry(self, textvariable=self.folderPath)
self.entPath.grid(row=0,column=1)
self.btnFind = ttk.Button(self, text="Browse Folder",command=self.setFolderPath)
self.btnFind.grid(row=0,column=2)
self.lblName2 = Label(self, text="Input")
self.lblName2.grid(row=1,column=0)
self.directory2Select = StringVar()
self.entExt = Entry(self, textvariable=self.directory2Select)
self.entExt.grid(row=1,column=1)
def setFolderPath(self):
folder_selected = filedialog.askdirectory()
self.folderPath.set(folder_selected)
@property
def folder_path(self):
return self.folderPath.get()
def popup_showinfo():
showinfo("Done")
def doStuff():
Images1 = directory1Select.folder_path
Images2 = directory2Select.get()
status = Label(gui, text="The folder you selected is " + str(Images1), bd=1, relief=SUNKEN, anchor=W)
status.grid(row=6, column=0, columnspan=3, sticky=W+E)
status.update()
print(str(Images2))
popup_showinfo()
##############################################################
mp = str(Images2)
def stringToList(string):
listRes = list(string.split(","))
return listRes
strA = mp
print(stringToList(strA))
mp = stringToList(strA)
mp = [x.strip(' ') for x in mp]
for m in mp:
print("1 " + m)
##############################################################
folderPath = StringVar()
directory1Select = FolderSelect(gui,"Source folder ")
directory1Select.grid(row=0,column=0)
tk.Label(gui, text="Input").grid(row=1, column = 0)
directory2Select = StringVar()
directory2Select = Entry(gui)
directory2Select.grid(row=1, column=1)
c = ttk.Button(gui, text="Start", command=doStuff)
c.grid(row=4,column=0)
frame.pack()
我试图修改网格,但没有起作用。还试图打包框架,但没有任何结果。我可以删除第一个输入并使用第二个输入,因为我只需要一个输入,但是不幸的是,我不知道如何对齐。
In my code, the folder selection is working and the second input in also working, but I can't make the first input to work or to align the second one with the folder selection. I only need one input filed that I can use further to display the input items.
import tkinter as tk
from tkinter import *
from tkinter import ttk
from tkinter import filedialog, simpledialog
from tkinter.messagebox import showinfo
gui = Tk()
gui.geometry("400x200")
gui.title("Test")
status = Label(gui, text="", relief=FLAT)
status.grid(row=6, column=0, columnspan=3, sticky=W+E)
frame = Frame(gui)
class FolderSelect(Frame):
def __init__(self,parent=None,folderDescription="",**kw):
Frame.__init__(self,master=parent,**kw)
self.folderPath = StringVar()
self.lblName = Label(self, text=folderDescription)
self.lblName.grid(row=0,column=0)
self.entPath = Entry(self, textvariable=self.folderPath)
self.entPath.grid(row=0,column=1)
self.btnFind = ttk.Button(self, text="Browse Folder",command=self.setFolderPath)
self.btnFind.grid(row=0,column=2)
self.lblName2 = Label(self, text="Input")
self.lblName2.grid(row=1,column=0)
self.directory2Select = StringVar()
self.entExt = Entry(self, textvariable=self.directory2Select)
self.entExt.grid(row=1,column=1)
def setFolderPath(self):
folder_selected = filedialog.askdirectory()
self.folderPath.set(folder_selected)
@property
def folder_path(self):
return self.folderPath.get()
def popup_showinfo():
showinfo("Done")
def doStuff():
Images1 = directory1Select.folder_path
Images2 = directory2Select.get()
status = Label(gui, text="The folder you selected is " + str(Images1), bd=1, relief=SUNKEN, anchor=W)
status.grid(row=6, column=0, columnspan=3, sticky=W+E)
status.update()
print(str(Images2))
popup_showinfo()
##############################################################
mp = str(Images2)
def stringToList(string):
listRes = list(string.split(","))
return listRes
strA = mp
print(stringToList(strA))
mp = stringToList(strA)
mp = [x.strip(' ') for x in mp]
for m in mp:
print("1 " + m)
##############################################################
folderPath = StringVar()
directory1Select = FolderSelect(gui,"Source folder ")
directory1Select.grid(row=0,column=0)
tk.Label(gui, text="Input").grid(row=1, column = 0)
directory2Select = StringVar()
directory2Select = Entry(gui)
directory2Select.grid(row=1, column=1)
c = ttk.Button(gui, text="Start", command=doStuff)
c.grid(row=4,column=0)
frame.pack()
I tried to modify the grid but didn't work. Also tried to pack the frame, but without any result. I could delete the first input and use the second one since I need only one, but I can't figure out how to align it unfortunately.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不是
frame.pack()
,但gui.mainloop()
。Not
frame.pack()
butgui.mainloop()
.您有这样的:
问题可以解决。
tk.label(gui
到内部def __init __
。和更名为self.lbl2 = label(self,...
。 GUIself
directory2select.grid(row = 1,column = 1)
to Insidedef __init __
。和重命名
self.directory2Select
。GUI
self
。因为重复。这取决于您重新名称。
frame.grid()
toframe.pack()
,已经有从由网格管理。
snippet:
screenshot:
You had this:
The problem can be fix.
tk.Label(gui
to insidedef __init__
. And renamedself.lbl2 = Label(self, ...
. Changegui
toself
.directory2Select = Entry(gui)
anddirectory2Select.grid(row=1, column=1)
to insidedef __init__
. Andrenamed
self.directory2Select
. Andgui
toself
.because of duplicate. It is up to you to re-name.
frame.grid()
toframe.pack()
, which already has slavesmanaged by grid.
Snippet:
Screenshot: