我正在尝试在TKinter中创建一个Scrolled Text小部件类,它允许在实例创建时指定宽度和高度。我有一个Scrolled Text类,它可以在创建Scrolled Text实例时输入窗口小部件中的文本但我无法弄清楚如何在实例创建时指定窗口小部件的宽度和高度。这个Scrolled Text小部件的大部分直接来自Lutz的Programming Python文本。这是我到目前为止的Scrolled Text类:
class ScrolledText(Frame):
def __init__(self, parent=None, text='', file=None, width='', height=''):
Frame.__init__(self, parent)
self.pack(expand=YES, fill=BOTH) # make me expandable
self.makewidgets()
self.settext(text, file)
def makewidgets(self, width='', height=''):
sbar = Scrollbar(self)
#text = Text(self, relief=SUNKEN)
text = Text(self, relief=SUNKEN)
sbar.config(command=text.yview) # xlink sbar and text
text.config(yscrollcommand=sbar.set) # move one moves other
sbar.pack(side=RIGHT, fill=Y) # pack first=clip last
text.pack(side=LEFT, expand=YES, fill=BOTH) # text clipped first
self.text = text
def settext(self, text='', file=None):
if file:
text = open(file, 'r').read()
self.text.delete('1.0', END) # delete current text
self.text.insert('1.0', text) # add at line 1, col 0
self.text.mark_set(INSERT, '1.0') # set insert cursor
self.text.focus() # save user a click
def gettext(self): # returns a string
return self.text.get('1.0', END+'-1c') # first through last
我想要的是创建一个看起来像这样的实例,这允许我指定滚动文本小部件的宽度和高度:
ScrolledText(text='aa', width=25, height=5).mainloop()
我希望能够更改实例创建期间指定的宽度和高度,以获得不同大小的Scrolled Text小部件,但无论我指定的宽度和高度如何,我总是得到相同大小的Scrolled Text小部件。如果有人有任何关于如何修改此滚动文本类以允许可变高度和宽度输入的建议,我将不胜感激。谢谢,乔治
答案 0 :(得分:0)
看起来你并没有使用width和height参数。您需要将值传递到创建文本窗口小部件的位置。有几种方法可以做到这一点。您可以将width
和height
参数保存为对象属性,也可以将它们传递给makewidgets
方法。
以下是将它们保存为对象属性的示例:
class ScrolledText(...):
def __init__(..., width='', height=''):
...
self.width = width
self.height = height
...
self.makewidgets()
def makewidgets(...):
...
text = Text(self, relief=SUNKEN, width=self.width, height=self.height)
...