Python 3.x 为什么在Python3滚动笔记本选项卡中看不到tkinter按钮?

Python 3.x 为什么在Python3滚动笔记本选项卡中看不到tkinter按钮?,python-3.x,tkinter,Python 3.x,Tkinter,我试图根据工作示例编写自己的代码,但做不到。这是我的密码。 我看不到滚动面板上的按钮。笔记本选项卡内的画布。我不明白怎么了。我很困惑。win7 64 python 3.4 # -*- coding: utf-8 -*- import tkinter from tkinter import ttk mainframe = tkinter.Tk() mainframe_width = (mainframe.winfo_screenwidth() / 2 - 200) mainframe_heigt

我试图根据工作示例编写自己的代码,但做不到。这是我的密码。 我看不到滚动面板上的按钮。笔记本选项卡内的画布。我不明白怎么了。我很困惑。win7 64 python 3.4

# -*- coding: utf-8 -*-
import tkinter
from tkinter import ttk

mainframe = tkinter.Tk()
mainframe_width = (mainframe.winfo_screenwidth() / 2 - 200)
mainframe_heigth = (mainframe.winfo_screenheight() / 2 - 250)
mainframe.geometry("%dx%d+%d+%d" % (800, 600, mainframe_width, mainframe_heigth))
mainframe.title('test')
n_book = ttk.Notebook(mainframe)
n_book.pack(fill='both', expand='yes')
n_book.pressed_index = None

x_name=["tab1","tab2","tab3","tab4"]
x_container=[]; x_canvas=[]; x_scroll=[]; x_frame=[]
cw,ch=200,400; fw,fh=200,1000; sr=(0,0,200,1000)

for i in range(4):
    x_container.append(tkinter.Frame(n_book))
    x_container[i].pack(fill=tkinter.BOTH, expand=True)
    n_book.add(x_container[i], text=x_name[i]) # add container to note book
    x_canvas.append(tkinter.Canvas(x_container[i], width=cw, height=ch)) # add canvas to container
    x_scroll.append(tkinter.Scrollbar(x_container[i], command=x_canvas[i].yview)) # add scroll to container
    x_canvas[i].config(yscrollcommand=x_scroll[i].set, scrollregion=sr)
    x_canvas[i].pack(side=tkinter.LEFT, fill=tkinter.BOTH, expand=True)
    x_scroll[i].pack(side=tkinter.RIGHT, fill=tkinter.Y)
    x_frame.append(tkinter.Frame(x_canvas[i], width=fw, height=fh,bg="gray")) # add frame to canvas

cocoa = ttk.Button(mainframe,text="cocoa") # add button to mainframe - worked
cocoa.place(height=40,width=200,relx=0.5,rely=0)

testbtn = ttk.Button(x_frame[0],text="shitbtn") # add button to frame with scroll - NOT WORKED
testbtn.place(height=40,width=200,relx=0.1,rely=0.1)
print(x_frame[0].winfo_children())
mainframe.mainloop()

要向画布添加框架或任何小部件,必须使用create_window方法

x_frame.append(tkinter.Frame(x_canvas[i], width=fw, height=fh,bg="gray")) # create the Frame
x_canvas[i].create_window(50, 50, window=x_frame[i], anchor='nw') # add frame to canvas