以下MWE用于具有水平和垂直滚动条的窗口 . 该窗口包含一个输入框,其中显示当前工作目录 . 但是,输入框中的文字不能全部被视为框太小 . 我希望能够在用户放大窗口时显示更多此文本 . 如何调整以下示例,以便使用窗口调整Entry框(在UserFileInput中定义)的大小?我尝试过使用 window.grid_columnconfigure (见下文),但这没有任何效果 . 这似乎是使用画布的一个问题,因为之前我能够让Entry框调整大小,但是我需要画布才能将水平和垂直滚动条放在窗口上 .

window.grid(row=0, column=0, sticky='ew')

window.grid_columnconfigure(0, weight=1)

(以及列= 1)但这没有效果 .

import Tkinter as tk

import tkFileDialog

import os

class AutoScrollbar(tk.Scrollbar):

def set(self, lo, hi):

if float(lo) <= 0.0 and float(hi) >= 1.0:

# grid_remove is currently missing from Tkinter!

self.tk.call("grid", "remove", self)

else:

self.grid()

tk.Scrollbar.set(self, lo, hi)

class Window(tk.Frame):

def UserFileInput(self,status,name):

row = self.row

optionLabel = tk.Label(self)

optionLabel.grid(row=row, column=0, sticky='w')

optionLabel["text"] = name

text = status#str(dirname) if dirname else status

var = tk.StringVar(root)

var.set(text)

w = tk.Entry(self, textvariable= var)

w.grid(row=row, column=1, sticky='ew')

w.grid_columnconfigure(1,weight=1)

self.row += 1

return w, var

def __init__(self,parent):

tk.Frame.__init__(self,parent)

self.row = 0

currentDirectory = os.getcwd()

directory,var = self.UserFileInput(currentDirectory, "Directory")

if __name__ == "__main__":

root = tk.Tk()

root.grid_columnconfigure(0, weight=1)

root.grid_rowconfigure(0,weight=1)

vscrollbar = AutoScrollbar(root,orient=tk.VERTICAL)

vscrollbar.grid(row=0, column=1, sticky='ns')

hscrollbar = AutoScrollbar(root, orient=tk.HORIZONTAL)

hscrollbar.grid(row=1, column=0, sticky='ew')

canvas=tk.Canvas(root,yscrollcommand=vscrollbar.set,xscrollcommand=hscrollbar.set)

canvas.grid(row=0, column=0, sticky='nsew')

vscrollbar.config(command=canvas.yview)

hscrollbar.config(command=canvas.xview)

window = Window(canvas)

canvas.create_window(0, 0, anchor=tk.NW, window=window)

window.update_idletasks()

canvas.config(scrollregion=canvas.bbox("all"))

root.mainloop()

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐