2017-04-26 9 views
0

각 행의 너비가 약 200자인 몇 개의 행을 표시하는 스크롤 상자가있는 문제가 있습니다. 나는 너비가 125로 충분하지 않았다. 그러나 나는 그것을 지나치게 지난 175 스크롤 막대가 사라집니다. 100 이하이면 모든 데이터를 스크롤하지만 아주 작은 창입니다. 창을 프레임의 크기로 만들고 모든 코드를 스크롤하고 싶습니다. 코드 :Tkinter 목록 상자 너비는 스크롤바와 간섭합니다


import Tkinter as tk 
import tkFont 
def view(): 
    data = ['|unique_id |  id |    species | sex_age | collector |       location |     preparator | collection_date | entered_date | innitials |   notes', 
      '|  88 | A-1444 |  puffinus grseus |  n/a |  n/a |        n/a |       n/a |  13 May 2013 | 27 Apr 2017 |  EB | TL: 395mm WC:', 
      '|  72 | A-1444 |  puffinus grseus |  n/a |  n/a |        n/a |       n/a |  13 May 2013 | 27 Apr 2017 |  EB | TL: 395mm WC:', 
      '|  71 | A-1445 |  anas clypeata |  M | G. Webber |        n/a |      A. Zack |  23 Oct 2013 | 26 Apr 2017 |  EB | TL: 395mm WC:', 
      '|  87 | A-1445 |  anas clypeata |  M | G. Webber |        n/a |      A. Zack |  23 Oct 2013 | 26 Apr 2017 |  EB | TL: 395mm WC:'] 
    size = [800, 600] 
    obj_main_frame = tk.Tk() 
    data_frame = tk.Frame(obj_main_frame, width=size[0], height=size[1]) 
    scrollbar_y = tk.Scrollbar(obj_main_frame, orient=tk.VERTICAL) 
    scrollbar_x = tk.Scrollbar(obj_main_frame, orient=tk.HORIZONTAL) 
    data_scrollable = tk.Listbox(data_frame, font=tkFont.Font(family="Courier", size=10), selectbackground="gray", selectmode=tk.SINGLE, width=150, yscrollcommand=scrollbar_y.set, xscrollcommand=scrollbar_x.set) 
    scrollbar_y.config(command=data_scrollable.yview) 
    scrollbar_x.config(command=data_scrollable.xview) 
    obj_main_frame.grid() 
    data_frame.grid_propagate(0) 
    data_frame.grid(row=0, column=0, sticky='nsew') 
    scrollbar_x.grid(row=1, column=0, sticky='ew') 
    scrollbar_y.grid(row=0, column=1, sticky='ns') 
    data_scrollable.grid(row=0, column=0, sticky='nsew') 
    for i, datum in enumerate(data): 
     data_scrollable.insert(tk.END, datum) 

    obj_main_frame.mainloop() 
    return 

if __name__ == '__main__': 
    view() 

답변

1

당신은 당신의 정렬이 실수를했다. 귀하의 목록 상자를 정의 할 때 부모의 크기에 적응 할 수 있도록

  • 먼저는 width 인수를 제거해야합니다 :

    data_scrollable = tk.Listbox(data_frame, 
              font=tkFont.Font(family="Courier", size=10), 
              selectbackground="gray", selectmode=tk.SINGLE, 
              yscrollcommand=scrollbar_y.set, 
              xscrollcommand=scrollbar_x.set) 
    
  • 둘째, 그 프레임에 목록 상자를 정렬 한 후, 당신은 해당 행과 열 비 - 제로 가중치를 부여해야 목록 상자가 확장 할 수 있도록 :

    data_scrollable.grid(row=0, column=0, sticky='nsew') 
    data_frame.columnconfigure(0, weight=1) 
    data_frame.rowconfigure(0, weight=1) 
    

참조 : Tkinter Grid Manager documentation