2012-07-11 2 views
0

편집 : 죄송합니다. 지금 물어보기 전에 더 자세히 조사 했어야합니다. 문제의 해결책을 찾았 기 때문에. 링크 : Adding a scrollbar to a group of widgets in TkinterPython, Tkinter : 항목 위젯이있는 캔버스의 스크롤 막대

파일의 텍스트가있는 입력 위젯이 눈금에 추가되는 Tkinter GUI에 캔버스를 추가하려고합니다. 파일의 텍스트 양은 큰 경향이 있으므로 스크롤바를 추가해야합니다.

엔트리 위젯이 예상되는 방식으로 캔버스에 추가되었으며 스크롤바를 독립적으로 테스트 했으므로 항목 위젯을 추가 할 때를 제외하고는 정상적으로 작동합니다. 그렇게하면 스크롤바가 사라집니다. 끔찍한 코드

groupfr = Frame(self.labelll, width = 200, height = 1000) 
    groupfr.pack_propagate(0) 
    groupfr.pack(fill='both', side='left') 

    canvasgroup = Pmw.Group(groupfr, tag_text= 'canvasgroup') 
    canvasgroup.pack(fill = 'both', expand = 1, padx = 1, pady = 1) 

    self.canvas = Tkinter.Canvas(canvasgroup.interior(), width = 200, 
           height = 1000, bg = 'white') 

    self.canvas.config(scrollregion=(0,0,20,1000)) 
    self.sbar = Tkinter.Scrollbar(self.canvas) 
    self.sbar.config(command=self.canvas.yview) 

    self.canvas.config(yscrollcommand=self.sbar.set) 

    self.sbar.pack(side='right', fill='y') 

    self.canvas.pack_propagate(0) 
    self.canvas.pack(side = 'left', fill = 'y', expand = 'no') 

나의 사과 : 여기

는 캔버스와 스크롤 코드입니다.

for items in linematch: 
    items = items.split('=') 
    list_of_lists.append(items) 

    columncount = 0 
    rowcount = 0 

    for items in list_of_lists: 
     rowcount = rowcount + 1 
     columncount = 0 

     for idx, (words) in enumerate(zip(items)): 
      self.canvas.pack_propagate(0) 
      colcnt = colcnt + 1 
      idx = Tkinter.Entry(self.canvas) 
      idx.grid(row=rowcount, column=columncount) 
      idx.insert(0, words) 

코드는 파일의 입력을 받아 그 자체가 또 다른리스트에 추가되는 두 개의 아이템의리스트로 각 행을 만든다 : 실제 문제가 시작될 곳 그러나이다.

word translation 
word translation 

등 (.이 정보가 얼마나 중요한지 알고하지 마십시오)

: 목록이 목록은 자신의 항목 위젯에서 각 단어 (번역)으로,이 같은 항목 위젯에 넣어 사용

항목 위젯을 추가 할 때 스크롤바가 사라지는 이유는 누구에게 있습니까?

감사

답변

2

당신은 캔버스에 위젯을 추가 할 캔버스 create_window 방법을 사용해야합니다. pack 또는 grid을 사용하면 캔바스에 포함되지 않으므로 스크롤 막대의 영향을받지 않습니다.

관련 문제