2
我在筆記本小部件中有3個選項卡,並且我想在第3個選項卡上有可滾動的框架。我設置了一個畫布和一個滾動條,併爲它們設置了所有的命令以進行交互,但它不起作用。我究竟做錯了什麼?完整的可運行代碼如下:爲什麼我的tkinter滾動條不工作?
import subprocess
from Tkinter import *
from ttk import *
import piper as Piper
import sqlite3
def confCanvas(event):
global viewKeysCanvas
print "ConfCanvasEvent\n";
viewKeysCanvas.configure(scrollregion=viewKeysCanvas.bbox("all"))
root =Tk()
sizex = 800
sizey = 500
posx = 100
posy = 100
root.wm_geometry("%dx%d+%d+%d" % (sizex, sizey, posx, posy))
root.title('Scroll Test')
note = Notebook(root)
tab1 = Frame(note)
tab2 = Frame(note)
tab3 = Frame(note)
tab1.pack()
tab2.pack()
tab3.pack(fill=BOTH, expand=True)
#tab1
printGroup = Frame(tab1)
Label(printGroup, text="Test label1").pack()
printGroup.pack()
#tab2
bulkGroup = Frame(tab2)
Label(bulkGroup, text="Test label2").pack()
bulkGroup.pack()
#tab3
vkFrame = Frame(tab3)
viewKeysCanvas = Canvas(vkFrame)
viewKeysGroup = Frame(viewKeysCanvas)
viewKeysScrollbar = Scrollbar(vkFrame, orient="vertical", command=viewKeysCanvas.yview)
viewKeysCanvas.configure(yscrollcommand=viewKeysScrollbar.set)
viewKeysScrollbar.pack(side=RIGHT, fill=Y)
viewKeysCanvas.pack(fill="both", expand=True)
viewKeysCanvas.create_window((0,0), window=tab3)
vkFrame.bind("<Configure>",confCanvas)
vkFrame.pack()
for x in range(0, 9):
aKeyGroup = LabelFrame(viewKeysGroup, text="number: "+str(x))
buttonFrame = Frame(aKeyGroup)
Button(buttonFrame, text="Action 1").pack(padx=10, side=LEFT)
Button(buttonFrame, text="Action 2").pack(padx=10, side=LEFT)
Label(aKeyGroup, text="Public key: ").pack(side=TOP)
Label(aKeyGroup, text="Private key: ").pack(side=TOP)
buttonFrame.pack(padx=10, pady=10)
aKeyGroup.pack()
viewKeysGroup.pack(padx=10, pady=10)
note.add(tab1, text = "Test tab 1")
note.add(tab2, text = "Test tab 2")
note.add(tab3, text = "Test tab 3")
note.pack(expand=True, fill=BOTH)
root.mainloop()
我正在使用Python 2.7.3在Debian上使用LXDE。我是一名經驗豐富的程序員,但我是Python的新手,所以請讓我知道如果我做的任何事情都是錯誤的。謝謝你的幫助!
完美,這正是我需要的。非常感謝你把所有的東西都放進適當的課堂!你真棒! – user1558646