【问题标题】:Issue in Entry Widget resizing in tkintertkinter 中的条目小部件调整大小问题
【发布时间】:2020-08-12 05:10:06
【问题描述】:

我正在使用以下代码在 tkinter Frame 上填充 Entry 小部件:

import tkinter as tk

def populate(frame):
    '''Put in some fake data'''
    for row in range(100):
        tk.Label(frame, text="%s" % row, width=3, borderwidth="1", relief="solid").grid(row=row, column=0)
        tk.Entry(frame, width = 50).grid(row=row, column=1)
    
def onFrameConfigure(canvas):
    '''Reset the scroll region to encompass the inner frame'''
    canvas.configure(scrollregion=canvas.bbox("all"))
    
root = tk.Tk()
canvas = tk.Canvas(root, borderwidth=0)
frame = tk.Frame(canvas)
vsb = tk.Scrollbar(root, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set)

vsb.pack(side="right", fill="y")
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((0,0), window=frame, anchor="nw")

frame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas))

populate(frame)

root.mainloop()

我在上述代码中面临的问题是,当我调整 tkinter 主窗口的大小时,Entry 小部件不会根据窗口大小的变化自动调整大小。

谁能帮我解决这个问题。

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    如果您想在调整 tkinter 窗口大小时调整条目大小,您需要:

    • 在调整canvas 的大小时调整frame 的大小
      def on_canvas_resized(event):
          canvas.itemconfig('frame', width=event.width)
      
      ...
      canvas.bind('<Configure>', on_canvas_resized)
      ...
      canvas.create_window((0,0), window=frame, anchor="nw", tag='frame') # added tag
      
    • 使Entry水平填充可用空间
      def populate(frame):
          '''Put in some fake data'''
          for row in range(100):
              tk.Label(frame, text="%s" % row, width=3, borderwidth="1", relief="solid").grid(row=row, column=0)
              tk.Entry(frame, width = 50).grid(row=row, column=1, sticky='ew') # added sticky
      ...
      frame.columnconfigure(1, weight=1) # make column 1 to fill available space horizontally
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-15
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 2014-03-13
      • 1970-01-01
      相关资源
      最近更新 更多