将Scrollbar可视地附加到Listbox:TkInter

时间:2016-05-09 11:21:15

标签: python user-interface tkinter

我遇到了TkInter界面的问题,我无法通过滚动条将其自身附加到Listbox元素 - 请参阅此图片:Problem interface

以下是创建和定位列表框和列表的代码。滚动条:

        lblpd3 = ttk.Label(mainframe,text='',font=("Helvetica", 5))
        lblpd3.grid(column=0, row=12, sticky=NW)
        scltrn = Scrollbar(mainframe, orient=VERTICAL)
        lbltrn = ttk.Label(mainframe,text='Select Transformation',font=("Helvetica", 11, "bold"))
        lbltrn.grid(column=0, row=13, sticky=NW)     
        self.lsttrn = Listbox(mainframe,selectmode=SINGLE,exportselection=0,width=62,height=4,yscrollcommand=scltrn.set,activestyle='none',selectbackground='#4A6984',selectborderwidth=3,highlightcolor='#4A6984',highlightthickness=1)
        scltrn.config(command=self.lsttrn.yview)
        scltrn.grid(column=0, row=14, sticky=(N,S,E)) 
        for item in self.coord:
            self.lsttrn.insert(END, item)
        self.lsttrn.grid(column=0, row=14, padx=0, sticky=NW)
        self.lsttrn.select_set(0)

是否有一个简单的黑客可以用来将滚动条向左推几个像素 - 文档似乎表明没有填充元素?

2 个答案:

答案 0 :(得分:0)

至少部分问题源于您将滚动条和列表框放在同一列中。他们需要在不同的列中。

一个非常简单的解决方案是使用仅包含 列表框和滚动条的框架。由于您没有水平滚动条,因此您可以使用pack将列表框和滚动条放在框架中,只需几行代码即可。然后,您可以将该框架放在其父框架中的单个列中。

答案 1 :(得分:0)

您可以将url窗口小部件和Scrollbar窗口小部件添加到他们自己的Listbox中。

然后将其添加为单个'。

虽然我不知道你的整个程序,但这里修复背后的逻辑应该大致如下:

Frame

这不应该是复制+粘贴修复,但希望您了解创建# Declare a new Frame to hold your Listbox and Scroll wheel myFrame = Frame.__init__(self, parent) # Make sure your Scrollbar is a part of our newly created Frame "myFrame" scltrn = Scrollbar(myframe, orient=VERTICAL) # Make sure your Listbox is a part of our newly created Frame "myFrame" self.lsttrn = Listbox(myFrame,selectmode=SINGLE,exportselection=0,width=62,height=4,yscrollcommand=scltrn.set,activestyle='none',selectbackground='#4A6984',selectborderwidth=3,highlightcolor='#4A6984',highlightthickness=1) ... #pack the Scrollbar and Listbox together in our Frame IN THIS ORDER self.lsttrn.pack() scltrn.pack() .... # Now grid our Frame containing both the Scrollwheel and Listbox to your GUI myFrame.grid(column=xxx,row=xxx,padx=xxx,sticky=xxx) 来保存滚动条和列表框,然后将那个格式化,而不是单独的逻辑背后的逻辑

希望这有帮助! 〜枪手