Tkinter Treeview запускается из главного окна

Я пытаюсь создать TreeView с переменным количеством столбцов, который позволяет горизонтальную прокрутку, когда количество столбцов делает TreeView шире, чем главное окно. Прямо сейчас у меня есть как вертикальная, так и горизонтальная полоса прокрутки. Горизонтальная полоса прокрутки никогда не включается, потому что TreeView и Frame, содержащие ее, расширяются, чтобы уместиться во все столбцы, при этом избыток выходит за пределы основного окна. Однако высота TreeView не изменяется независимо от количества строк. Если бы кто-то мог помочь мне подражать этому поведению по горизонтали, это было бы очень ценно.

TreeView слишком большой, не может видеть вертикальную полосу прокрутки или правый конец горизонтальной полосы прокруткиTreeView слишком большой, не может видеть вертикальную полосу прокрутки или правый конец горизонтальной полосы прокрутки

TreeView подходит, обе полосы прокрутки можно увидетьTreeView подходит, обе полосы прокрутки можно увидеть

Я попытался включить соответствующий код ниже:

class Application(Frame):

def __init__(self, master=None):
    Frame.__init__(self, master)
    self.dora = DoraExplorer()

    self.currentDict = {}
    self.lbox_list = []
    self.prevIndex =''
    self.pack()
    self.create_widgets()

def populateTreeView(self,tabDict):
    header = tabDict['header']
    data = tabDict['data']
    self.tree["columns"] = header
    self.tree['show'] = 'headings'
    self.tree.delete(*self.tree.get_children())

    for head in header:
        self.tree.column(head, width=10, anchor='c')
        self.tree.heading(head, text=head)
    #print(data)
    for j in range(len(data)):
        row = list(data[j])
        self.tree.insert("",'end',text=str(j),values=row)

def queryAction(self):
    #self.frame.delete('1.0',END)
    d = self.dbVar.get()
    t = self.tableVar
    cf = self.query.get()
    queryResults = self.dora.runQueries(cf,d,t)

    queryText = queryResults['text']
    label = queryText['label']
    title = queryText['title']


    self.populateTreeView(queryResults['table'])
def create_widgets(self):

    self.query = StringVar()
    self.createDBMenu()
    self.search_var = StringVar()
    self.search_var.trace("w", self.update_list)
    self.scrollbar = Scrollbar(self, orient=VERTICAL)
    self.lbox = Listbox(self, width=45, height=15,yscrollcommand=self.scrollbar.set)
    self.lbox.bind('<<ListboxSelect>>',self.onselect)
    self.lbox.grid(row=4, column=1,rowspan=9, padx=10, pady=3)

    self.entry = Entry(self, textvariable=self.search_var, width=40)
    self.entry.grid(row=3, column=1, padx=10, pady=3)

    self.cRadio = Radiobutton(self,text='Count',variable=self.query,value ='countTop',indicatoron=0)
    self.cRadio.grid(row=13,column=1)

    self.fRadio = Radiobutton(self,text='Foreign',variable=self.query,value ='foreignKeys',indicatoron=0)
    self.fRadio.grid(row=14,column=1)

    self.queryButton = Button(self, text="Query", command=self.queryAction)
    self.queryButton.grid(row=9,column=2,padx=3,pady=.05)

    self.treeFrame = Frame(self,width = 300, height = 400)
    self.treeFrame.grid(row=4, column=3,columnspan=3,rowspan=9, padx=10, pady=3)
    self.treeFrame.columnconfigure(3,weight=1)

    self.tree = ttk.Treeview(self.treeFrame, selectmode='browse')
    self.tree.grid(row=1, column=0, sticky=NSEW,in_=self.treeFrame, columnspan=3, rowspan=9)
    self.tree.grid_propagate(False)
    self.scbHDirSel =Scrollbar(self.treeFrame, orient=HORIZONTAL, command=self.tree.xview)
    self.scbVDirSel =Scrollbar(self.treeFrame, orient=VERTICAL, command=self.tree.yview)
    self.scbVDirSel.grid(row=1, column=50, rowspan=50, sticky=NS, in_=self.treeFrame)
    self.scbHDirSel.grid(row=52, column=0, rowspan=2,columnspan=3, sticky=EW,in_=self.treeFrame)
    self.tree.configure(yscrollcommand=self.scbVDirSel.set, xscrollcommand=self.scbHDirSel.set) 

root = Tk()

root.title("Tk dropdown example")

app= Application(master=root)
app.mainloop()

1 ответ

Закончилось переключение на wxPython, так как их класс Grid делает это изначально

SimpleGrid

Другие вопросы по тегам