2012-08-08 5 views
0

나는 Python으로 프로그램을 작성했다. 그러나 이것을하는 더 짧은 방법이 있을지 궁금합니다. 특히 "캔버스", "프레임", "LabelFrame"와 "라벨"에 대해, "scrollregion"자동으로 (내가 쓴 것보다, 그리고 Tkinter를 가능한 자연적인 방법 경우) 여기캔버스에서 Tkinter의 스크롤 영역?

가되어 있는지 확인하는 다른 방법이 코드 :

from tkinter import * 
dict = {} 
Liste = ["bir","iki","üç","4",5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] 
a = 1 

####### ekleme basi ################################################## 
pencere = Tk() 
pencere.geometry("{0}x{1}".format(100, 100)) 

labelFrame = LabelFrame(pencere, width = 100, height = 100) 
labelFrame.pack(side="left",fill=BOTH) 
canvas = Canvas(labelFrame,relief=SUNKEN) 
#canvas.config(scrollregion=(0,0,300,1000)) # halloldu =) 

scrollbar = Scrollbar(labelFrame) 
scrollbar.config(command=canvas.yview) 
canvas.config(yscrollcommand=scrollbar.set) 
scrollbar.pack(side="right",fill=Y) 
canvas.pack(side="left",expand=YES,fill=BOTH) 

frame = Frame(canvas,width=100,height=100) 
frame.pack(side="top",fill=BOTH) 
canvas.create_window(0,0,window=frame, anchor="nw") 
####### ekleme sonu ################################################## 

bas = [0, 0, 0, 100] 
for i in Liste: 
    dict["a%s"%a] = Label(frame, text=i) # "frame" ekledim 
    dict["a%s"%a].grid(row=a) 
    canvas["scrollregion"] = "%d %d %d %d" %(bas[0], bas[1], bas[2], bas[3]) 
    bas[3] += 16 # "scrollregion" i dinamik olarak arttir (degistirebilirsiniz) 
    a += 1 


mainloop() 

참고 : 영어는 내 두 번째 언어이며 내가 잘 모르는, 그래서 죄송합니다.

답변

3

스크롤 영역을 설정하는 일반적인 방법은 그것을 리터럴 문자열 "all"

canvas.configure(scrollregion = canvas.bbox("all")) 
+0

을주는 bbox 방법으로 검색 할 수 있습니다 캔버스에 모든 것을의 경계 상자로 설정하는 것입니다 질문은 다음과 같습니다. 몇시에 canvas.bbox ("전체")에서 무언가를 얻을 수 있습니까? 너무 일찍 전화하면 잘못된 값을 얻게됩니다. – jms

관련 문제