是否可以将滚动条添加到Tkinter中的Label Frame?

时间:2018-02-06 15:37:39

标签: python tkinter tk

我一直试图在Tkinter中添加垂直滚动条到标签框架,但我一直都在失败,它甚至可能吗? 我之前看到过有关此事的帖子,但这些帖子来自5年多以前,所以我想看看是否有变化。 我创建了一个按下按钮时添加新条目的函数,我想添加一个滚动条,以便我可以看到所有条目,以防有很多条目。 你能帮我解决这个问题吗?

这是错误:

AttributeError: 'LabelFrame' object has no attribute 'yview'

这是我的代码:

from tkinter import *
from tkinter import ttk

myApp = Tk()
myApp.title(" MY GUI")                         
myApp.geometry("1000x650")


frame1=LabelFrame(myApp,text="Activities",height=15)
frame1.grid(row=0,column=0,padx=5)

vertSB=ttk.Scrollbar(frame1,orient="vertical",command=frame1.yview)
vertSB.grid(row=2,rowspan=10,column=6,padx=5,sticky="NS")
frame1.configure(yscrollcommand=vertSB.set)

i=Label(frame1, text=" i ")
i.grid(row=0,column=1,pady=5)

Tasks=Label(frame1, text="Tasks")
Tasks.grid(row=0,column=2,pady=5)

Planned=Label(frame1, text="Planned")
Planned.grid(row=0,column=3,pady=5)

Real=Label(frame1, text="Real")
Real.grid(row=0,column=4,pady=5)

Prod=Label(frame1, text="Prod.")
Prod.grid(row=0,column=5,pady=5)

newrow=1
class AddNewTask(object):
    rowlist=[]

    def update_row_values(self):

        for i,entry in enumerate(self.rowlist):
            entry.delete(0, 'end')
            entry.insert(0,i+1)

    def addTask(self):

        def delete():
            bdelete.destroy()
            iEntry.destroy()
            taskEntry.destroy()
            plannedEntry.destroy()
            realEntry.destroy()
            prodEntry.destroy()
            self.rowlist.remove(iEntry)
            self.update_row_values()

        global newrow
        newrow=newrow+1

        bdelete=Button(frame1,text="-",command=delete)
        bdelete.grid(row=newrow,column=0,sticky="E",padx=4)

        iEntry=Entry(frame1,width=3)    
        self.rowlist.append(iEntry)     
        iEntry.grid(row=newrow,column=1,padx=1)   
        n = len(self.rowlist)  
        iEntry.insert(0,n)  

        taskEntry=Entry(frame1,width=55)
        taskEntry.grid(row=newrow,column=2,padx=1)

        plannedEntry=Entry(frame1,width=11)
        plannedEntry.grid(row=newrow,column=3,padx=1)

        realEntry=Entry(frame1,width=11)
        realEntry.grid(row=newrow,column=4,padx=1)

        prodEntry=Entry(frame1,width=11)
        prodEntry.grid(row=newrow,column=5,padx=1)


    def __init__(self):

        buttonadd=Button(frame1,text="Add Task",command=self.addTask)
        buttonadd.grid(row=0,column=0,padx=3,pady=5)

AddNewTask=AddNewTask()

myApp.mainloop()

1 个答案:

答案 0 :(得分:0)

不能将滚动条添加到LabelFrame。我可以建议使用no associated namespace