首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移除帧间的空间?

移除帧间的空间?
EN

Stack Overflow用户
提问于 2022-03-02 21:26:10
回答 1查看 117关注 0票数 -1

我目前正在尝试建立一个tkinter程序,在其中我有2帧。1包含2个输入字段和一个按钮。第二个框架包含一个文本字段。我已经进行了配置,以便文本字段和入口字段调整到我想要的规范(例如,文本字段填充它的整个框架)。然而,当我调整窗口的大小时,我发现这两个框架之间有一个空空间,当我垂直拉伸窗口时,这两个框架会垂直延伸。我曾尝试以多种不同的方式补救这一问题,但似乎没有任何办法奏效。

我怎么知道框架之间的空间?当我把边框放在边框周围的时候,空间就在两个边框之间,也就是这两个边框的外面。

如果这有帮助的话,我将在这两个框架上使用.pack()方法。

有没有办法消除帧之间的空空间?谢谢。

代码语言:javascript
复制
import os
from os import path
from os import listdir
from tkinter import *



class OrdIFiler:
    def __init__(self):
        

        self.found_term = {}
        self.files_searched = 0
        self.dir_searched = 0
        self.lines_found = 0

        window = Tk()
        window.title("Finn ord i filer")
        window.geometry("1000x400")
        
        frame1 = Frame(window,highlightbackground="blue", highlightthickness=2, height=30)
        frame1.columnconfigure(1,weight=1)
        frame1.rowconfigure(0, weight=0)
        frame1.pack(expand=True, fill='x', anchor='n')
        frame1.pack_propagate(False)
        frame1.grid_propagate(False)
        
        self.file_dir_name = StringVar()
        file_entry = Entry(frame1, fg="gray", textvariable=self.file_dir_name, width=100)
        file_entry.grid(row=0, column=0)
        file_entry.insert(0, "Directory or file path")
        file_entry.bind('<FocusIn>', self.clear_default)

        self.search_term = StringVar()
        term_entry = Entry(frame1, text="Search term", fg="gray", textvariable=self.search_term)
        term_entry.grid(row=0, column=1, stick="we")
        term_entry.insert(0, "Search term")
        term_entry.bind('<FocusIn>', self.clear_default)

        btn_search = Button(frame1, text="Search", command = self.searching).grid(row=0,column=2, sticky="e")

        frame2 = Frame(window, highlightbackground="red", highlightthickness=2)
        frame2.columnconfigure(0,weight=1)
        frame2.rowconfigure(0,weight=1)
        frame2.pack(expand=True, fill='both')

        self.text_field = Text(frame2)
        self.text_field.grid(sticky="nsew")
        self.text_field.insert(END, " ")


        window.mainloop()


    def clear_default(self, event):
        event.widget.delete(0,END)
        event.widget.config(fg="black")
        #event.widget.unbind('<FocusIn>')


    def searching(self):
        self.files_searched = 0
        self.dir_searched = 0

        self.text_field.delete("0.0",END)
        self.text_field.insert(END, "Search start\n--------------------------\n")

        self.recursive_search(self.file_dir_name.get(), self.search_term.get())

        search_term = self.search_term.get()

        self.text_field.insert(END, "--------------------------\nSearch Ended\n")
        self.text_field.insert(END, f"Searched: {self.dir_searched:4} directories and {self.files_searched:5} files. {self.lines_found}")
        self.text_field.insert(END, f" occurances " if self.lines_found>1 else " occurance ") 
        self.text_field.insert(END, f"of '{search_term}'")

        print(self.found_term)



    def recursive_search(self, file_dir_name, search_term):
        
        if path.isfile(file_dir_name):
            self.files_searched += 1
            text = open(file_dir_name, "r")
            try:
                for line in text:
                    if search_term in line:
                        self.lines_found += 1
                        self.text_field.insert(END,f'{file_dir_name:70}{line}')
                        if file_dir_name in self.found_term.keys():
                            self.found_term[file_dir_name].append(line.strip("\n"))
                        else:
                            self.found_term[file_dir_name] = [line.strip("\n")]

            except UnicodeDecodeError:
                print(text, "could not be read due to unicode-8 codec format error\n")
            text.close()

        elif path.isdir(file_dir_name):
            self.dir_searched += 1
            for x in listdir(file_dir_name):
                self.recursive_search(file_dir_name+"/"+x, search_term)
EN

回答 1

Stack Overflow用户

发布于 2022-03-02 22:41:54

对于这两个框架,您已经将expand设置为true。这意味着在调整窗口大小时,任何额外的空间都将分配给两个框架。

解决特定问题的方法是保留expand的默认值,或者将其设置为False,用于frame1

代码语言:javascript
复制
frame1.pack(expand=False, fill='x', anchor='n')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71329337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档