2017-10-13 85 views
0

君子Python 3 - ttk.treeview不與網格一起工作,爲什麼會發生這種情況?

下面的代碼已經與.pack()工作,但不.grid()

treeview已滾動條工作時.pack()已啓用,但如果我改變代碼爲.grid()滾動條停止工作,沒有工作一些可能性的代碼.grid()

from tkinter import * 
from tkinter import ttk 

class App(object): 
    def run(self): 
     root=Tk() 
     root.geometry('768x612') 
     title='dp' 
     root.title(title) 
     head_columns = (
      "ID CLIENTE", 
      "NOME", 
      "CPF", 
      "DATA Expedição CPF", 
      "RG", 
      "DATA Expedição RG", 
      "ENDEREÇO", 
      "NÚMERO", 
      "BAIRRO", "CIDADE", "ESTADO", "CEP", "TEL", "CEL", "E-MAIL", "OBS")   

     f = Frame(root) 
     f.pack() 
     #f.grid() 

     xscrollbar = Scrollbar(f, orient=HORIZONTAL) 
     xscrollbar.pack(side='bottom', fill='both') 

     text = ttk.Treeview(f, 
        xscrollcommand=xscrollbar.set, 
        show="headings", 
        columns=head_columns,) 
     text.pack(side='right', fill='y') #if I change this for .grid() he's not working 

     for item in text["columns"]: 
      text.column(item) 
      text.heading(item, text=item) 
     text.insert("", 0, text=item, values=("a" * 200)) 

     xscrollbar.config(command=text.xview) 
     mainloop() 
if __name__=='__main__': 
    win=App() 
    win.run() 

回答

1

我已經解決了我的問題的工作,

.grid()太工作與滾動條,但如果你固定寬度和高度與.geometry()在你的窗口他們不會滾動,所以我確實需要設置我的窗口調整以下參數,基本上你需要做你的窗口調整大小自動滾動工作

root.grid_rowconfigure(0, weight=1) 
root.grid_columnconfigure(0, weight=1) 
+0

做得好解決這個自己。爲了將來的參考,這是一個很好的做法,總是至少配置一行和一列,使用網格來創建GUI時有一個權重:) –

+0

Yeap,謝謝你!我用另一個我創建的函數來做這件事 –

-1

FIY

CODE解決

from tkinter import * 
from tkinter import ttk 

class App(object): 
    def run(self): 
     root=Tk() 
     #root.geometry('768x612') 
     title='Tables' 
     root.title(title) 
     root.grid_rowconfigure(0, weight=1) 
     root.grid_columnconfigure(0, weight=1) 
     head_columns = (
      "ID CLIENTE", 
      "NOME", 
      "CPF", 
      "DATA Expedição CPF", 
      "RG", 
      "DATA Expedição RG", 
      "ENDEREÇO", 
      "NÚMERO", 
      "BAIRRO", "CIDADE", "ESTADO", "CEP", "TEL", "CEL", "E-MAIL", "OBS")   

     f = Frame(root) 
     f.grid(sticky=NSEW) 
     f.grid_rowconfigure(0, weight=1) 
     f.grid_columnconfigure(0, weight=1) 

     xscrollbar = Scrollbar(f, orient=HORIZONTAL) 
     xscrollbar.grid(row=1, sticky=NSEW) 
     xscrollbar.grid_rowconfigure(0, weight=1) 
     xscrollbar.grid_columnconfigure(0, weight=1) 

     text = ttk.Treeview(f, 
        xscrollcommand=xscrollbar.set, 
        show="headings", 
        columns=head_columns) 
     #text.pack(side='right', fill='y') 
     text.grid(row=0,sticky=NSEW) 
     text.grid_rowconfigure(0, weight=1) 
     text.grid_columnconfigure(0, weight=1)   

     for item in text["columns"]: 
      text.column(item) 
      text.heading(item, text=item) 
     text.insert("", 0, text=item, values=("a" * 200)) 
     text.insert("", 1, text=item, values=("a" * 200)) 
     text.insert("", 0, text=item, values=("a" * 200)) 
     text.insert("", 0, text=item, values=("a" * 200)) 
     text.insert("", 0, text=item, values=("a" * 200)) 
     text.insert("", 0, text=item, values=("a" * 200)) 

     xscrollbar.config(command=text.xview) 
     mainloop() 
if __name__=='__main__': 
    win=App() 
    win.run() 
相關問題