我目前正在尝试建立一个tkinter程序,在其中我有2帧。1包含2个输入字段和一个按钮。第二个框架包含一个文本字段。我已经进行了配置,以便文本字段和入口字段调整到我想要的规范(例如,文本字段填充它的整个框架)。然而,当我调整窗口的大小时,我发现这两个框架之间有一个空空间,当我垂直拉伸窗口时,这两个框架会垂直延伸。我曾尝试以多种不同的方式补救这一问题,但似乎没有任何办法奏效。
我怎么知道框架之间的空间?当我把边框放在边框周围的时候,空间就在两个边框之间,也就是这两个边框的外面。
如果这有帮助的话,我将在这两个框架上使用.pack()方法。
有没有办法消除帧之间的空空间?谢谢。
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)发布于 2022-03-02 22:41:54
对于这两个框架,您已经将expand设置为true。这意味着在调整窗口大小时,任何额外的空间都将分配给两个框架。
解决特定问题的方法是保留expand的默认值,或者将其设置为False,用于frame1。
frame1.pack(expand=False, fill='x', anchor='n')https://stackoverflow.com/questions/71329337
复制相似问题