第一个输入不起作用,第二个输入将不与TKinter保持一致

发布于 2025-02-06 14:05:26 字数 2664 浏览 1 评论 0原文

在我的代码中,文件夹选择正在工作,并且在工作中也是第二个输入,但是我无法将第一个输入工作或将第二个输入与文件夹选择对齐。我只需要提交一个输入,我可以进一步显示输入项目。

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

久随 2025-02-13 14:05:26

不是frame.pack(),但gui.mainloop()

Not frame.pack() but gui.mainloop().

°如果伤别离去 2025-02-13 14:05:26

,但我无法进行第一个输入或对齐第二个输入
使用文件夹选择。

我试图修改网格,但没有起作用。也试图打包
框架,但没有任何结果。

您有这样的:

“在此处输入图像描述”

问题可以解决。

  • 移动tk.label(gui到内部def __init __。和更名为self.lbl2 = label(self,...。 GUI self

  • directory2select.grid(row = 1,column = 1) to Inside def __init __。和
    重命名self.directory2SelectGUI self
  • 我离开该Directory2Select = stringVar()以发表或在
    因为重复。这取决于您重新名称。
  • 更改frame.grid() to frame.pack(),已经有从
    由网格管理。

snippet:

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)

        self.lbl2 = Label(self, text="Input")
        self.lbl2.grid(row=2, column = 0)
        self.directory2Select = Entry(self)
        self.directory2Select.grid(row=2, 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)
 
#directory2Select = StringVar()
 

c = ttk.Button(gui, text="Start", command=doStuff)
c.grid(row=4,column=0)
frame.grid()
           

gui.mainloop()

screenshot:

“在此处输入图像描述”

but I can't make the first input to work or to align the second one
with the folder selection.

I tried to modify the grid but didn't work. Also tried to pack the
frame, but without any result.

You had this:

enter image description here

The problem can be fix.

  • Moved tk.Label(gui to inside def __init__. And renamed self.lbl2 = Label(self, .... Change gui to self.
  • Move directory2Select = Entry(gui) and
    directory2Select.grid(row=1, column=1) to inside def __init__. And
    renamed self.directory2Select. And gui to self.
  • I leave that directory2Select = StringVar() to comment out or in,
    because of duplicate. It is up to you to re-name.
  • Change frame.grid() to frame.pack(), which already has slaves
    managed by grid.

Snippet:

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)

        self.lbl2 = Label(self, text="Input")
        self.lbl2.grid(row=2, column = 0)
        self.directory2Select = Entry(self)
        self.directory2Select.grid(row=2, 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)
 
#directory2Select = StringVar()
 

c = ttk.Button(gui, text="Start", command=doStuff)
c.grid(row=4,column=0)
frame.grid()
           

gui.mainloop()

Screenshot:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文