Я могу решить проблему с тем, что ваше поле ввода не расширяется должным образом.
Это потому, что у вас есть fill=X
, и это неверный ввод для заполнения.Вместо этого используйте fill="x"
.Я полагаю, что ваша вторая проблема с полем ввода, имеющим большой разрыв, заключается в том, что вместо этого вы установили expand = True
вместо этого на expand = False
.
При этом я предпочел вместо этого использовать диспетчер геометрии grid()
.Посмотрите на мой ниже пример того, как сделать это с сеткой и весами.
При использовании менеджера grid()
вы можете указать каждому виджету, где именно вы хотите его видеть в сетке.Использование весов для указания строки или столбца, сколько, если таковые имеются, они должны расширяться с окном.Это в сочетании с sticky="nsew"
поможет нам контролировать развертывание материалов в окне.
import tkinter as tk
from tkinter import scrolledtext
class Main(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.title("Main")
width = self.winfo_screenwidth()
height = self.winfo_screenheight()
self.minsize(width=1066, height=766)
self.maxsize(width=width, height=height)
self.rowconfigure(0, weight=1)
self.rowconfigure(1, weight=0)
self.columnconfigure(0, weight=1)
text_area = scrolledtext.ScrolledText(self,width=75,height=35)
text_area.grid(row=0, column=0, ipady=3, ipadx=3, sticky="nsew")
text_entry = tk.Entry(self,width=65)
text_entry.grid(row=1, column=0, ipady=3, ipadx=3, sticky="ew")
text_entry.configure(foreground="blue",font=('Arial', 10, 'bold', 'italic'))
text_entry.focus()
def initial(self):
print ("initializing")
if __name__ == '__main__':
root = Main()
root.mainloop()
Обновление:
Чтобы прояснить вашу проблему с заполнением и расширением, я обновил ваш код с исправлениемтак что вы можете видеть, как это работает.
import tkinter as tk
from tkinter import scrolledtext
class Main:
def __init__(self, master):
self.master = master
master.title("Main")
width = master.winfo_screenwidth()
height = master.winfo_screenheight()
master.minsize(width=1066, height=766)
master.maxsize(width=width, height=height)
self.frame = tk.Frame(self.master)
text_area = scrolledtext.ScrolledText(self.master,width=75,height=35)
text_area.pack(side="top",fill='both',expand=True)
text_entry = tk.Entry(self.master,width=65)
text_entry.pack(side="top",fill="x", expand=False, ipady=3, ipadx=3)
text_entry.configure(foreground="blue",font=('Arial', 10, 'bold', 'italic'))
text_entry.focus()
self.frame.pack()
def initial(self):
print ("initializing")
def main():
root = tk.Tk()
app = Main(root)
root.mainloop()
if __name__ == '__main__':
main()