Python 为什么';点击几次按钮后,我的阴囊不会出现吗?

Python 为什么';点击几次按钮后,我的阴囊不会出现吗?,python,tkinter,scrollbar,Python,Tkinter,Scrollbar,我制作了框架,框架内还有其他框架——最里面的框架中有条目。(粘贴的代码中不包括条目,因为它太长)通过单击按钮,我在新行中添加了一个新帧。当我添加了如此多的帧以至于屏幕已满时,滚动条应该能够滚动。但事实并非如此,滚动条由于某种原因无法显示 from tkinter import * from tkinter import ttk root = Tk() root.state('zoomed') class Window: def __init__(self, master):

我制作了框架,框架内还有其他框架——最里面的框架中有条目。(粘贴的代码中不包括条目,因为它太长)通过单击按钮,我在新行中添加了一个新帧。当我添加了如此多的帧以至于屏幕已满时,滚动条应该能够滚动。但事实并非如此,滚动条由于某种原因无法显示

from tkinter import *
from tkinter import ttk

root = Tk()
root.state('zoomed')

class Window:
    def __init__(self, master):
        this_is_a_frame = Frame(master)
        this_is_a_frame.pack(fill=BOTH, expand=1)
        self.this_is_a_canvas = Canvas(this_is_a_frame)
        self.this_is_a_canvas.pack(side=LEFT, fill=BOTH, expand=1)
        this_is_a_scrollbal = ttk.Scrollbar(this_is_a_frame, orient=VERTICAL, command=self.this_is_a_canvas.yview)
        this_is_a_scrollbal.pack(side=RIGHT, fill=Y)
        self.this_is_a_canvas.configure(yscrollcommand=this_is_a_scrollbal.set)
        self.this_is_a_canvas.bind('<Configure>',
                                   lambda e: self.this_is_a_canvas.configure(
                                       scrollregion=self.this_is_a_canvas.bbox('all')))
        this_second_frame = Frame(self.this_is_a_canvas)
        self.this_is_a_canvas.create_window((0, 0), window=this_second_frame, anchor='nw')
        self.main_frame = Frame(this_second_frame)
        self.main_frame.pack()
        self.main_frame.configure(bg='pink')
        self.my_frame = Frame(self.main_frame, highlightbackground="orange", highlightthickness=2)
        self.my_frame.pack()
        self.my_frame.configure(bg='green')
        self.my_other_frame = Frame(this_second_frame)
        self.my_other_frame.pack()
        self.my_other_frame.configure(bg='blue')

        self.col = 4
        for j in range(9):
            self.myLab = Label(self.my_frame, text='label').grid(row=0, column=j + 1)
            self.myLab_2 = Label(self.my_frame, text='label').grid(row=2, column=j + 1)
            for k in range(1):
                self.myEntry_loop = Entry(self.my_frame)
                self.myEntry_loop.grid(row=k + 1, column=j + 1, pady=10, padx=10)
                self.myEntry_loop_2 = Entry(self.my_frame)
                self.myEntry_loop_2.grid(row=k + 3, column=j + 1, pady=10, padx=10)

        self.myButton_newLevel = Button(self.my_other_frame, text="new frame", command=self.new_level)
        self.myButton_newLevel.grid(row=self.col, column=0, padx=10)

        def _on_mouse_wheel(event):
            self.this_is_a_canvas.yview_scroll(-1 * int((event.delta / 120)), "units")

            self.this_is_a_canvas.bind_all("<MouseWheel>", _on_mouse_wheel)

    def new_level(self):
        self.my_frame = Frame(self.main_frame, highlightbackground="orange", highlightthickness=2)
        self.my_frame.pack(side=TOP, fill=X)

        for j in range(9):
            self.myLab = Label(self.my_frame, text='new label').grid(row=0, column=j + 1)
            self.myLab_2 = Label(self.my_frame, text='new label').grid(row=2, column=j + 1)
            for k in range(1):
                self.myEntry_loop = Entry(self.my_frame)
                self.myEntry_loop.grid(row=k + 1, column=j + 1, pady=10, padx=10)
                self.myEntry_loop_2 = Entry(self.my_frame)
                self.myEntry_loop_2.grid(row=k + 3, column=j + 1, pady=10, padx=10)


val = Window(root)
root.mainloop()
从tkinter导入*
从tkinter导入ttk
root=Tk()
root.state('缩放')
类窗口:
定义初始(自我,主):
这是一个帧=帧(主帧)
这是一个frame.pack(fill=BOTH,expand=1)
self.this\u is\u canvas=画布(this\u is\u frame)
self.this是canvas.pack(side=LEFT,fill=BOTH,expand=1)
这是滚动条(这是框架,方向是垂直的,命令是自我的。这是画布。yview)
这是一个滚动包(侧=右,填充=Y)
self.this_is_a_canvas.configure(yscrollcommand=this_is_a_scrollbal.set)
赛尔夫。这是一张画布。绑定(“”,
lambda e:self.this_是_a_canvas.configure(
scrollregion=self。这是\u a\u canvas.bbox('all'))
此第二帧=帧(自身。此为画布)
self.this是画布。创建窗口((0,0),窗口=这个第二帧,anchor='nw')
self.main\u frame=帧(此第二帧)
self.main_frame.pack()
self.main_frame.configure(bg='pink')
self.my_frame=frame(self.main_frame,highlightbackground=“橙色”,highlightthickness=2)
self.my_frame.pack()
self.my_frame.configure(bg='green')
self.my\u other\u frame=帧(此第二帧)
self.my_other_frame.pack()
self.my\u other\u frame.configure(bg='blue')
self.col=4
对于范围(9)内的j:
self.myLab=Label(self.my_frame,text='Label').grid(行=0,列=j+1)
self.myLab_2=Label(self.my_frame,text='Label').grid(行=2,列=j+1)
对于范围(1)中的k:
self.myEntry\u循环=条目(self.my\u框架)
self.myEntry\u loop.grid(行=k+1,列=j+1,pady=10,padx=10)
self.myEntry\u loop\u 2=条目(self.my\u框架)
self.myEntry\u loop\u 2.grid(行=k+3,列=j+1,pady=10,padx=10)
self.myButton\u newLevel=Button(self.my\u other\u frame,text=“new frame”,command=self.new\u level)
self.myButton\u newLevel.grid(行=self.col,列=0,padx=10)
鼠标滚轮上的def(事件):
self.this_是_a_canvas.yview_滚动条(-1*int((event.delta/120)),“单位”)
self.this是画布。绑定所有(“,”在鼠标滚轮上)
def新_液位(自身):
self.my_frame=frame(self.main_frame,highlightbackground=“橙色”,highlightthickness=2)
self.my_frame.pack(侧面=顶部,填充=X)
对于范围(9)内的j:
self.myLab=Label(self.my_frame,text='new Label').grid(行=0,列=j+1)
self.myLab_2=Label(self.my_frame,text='new Label').grid(行=2,列=j+1)
对于范围(1)中的k:
self.myEntry\u循环=条目(self.my\u框架)
self.myEntry\u loop.grid(行=k+1,列=j+1,pady=10,padx=10)
self.myEntry\u loop\u 2=条目(self.my\u框架)
self.myEntry\u loop\u 2.grid(行=k+3,列=j+1,pady=10,padx=10)
val=窗口(根)
root.mainloop()
那么,我做错了什么?当屏幕上满是帧时,我如何才能向下滚动?

如果将
事件绑定到错误的小部件上,则应在
这一秒帧上绑定,而不是在
自身上绑定。这是一张画布

        """
        # not bind on "self.this_is_a_canvas"
        self.this_is_a_canvas.bind('<Configure>',
                                   lambda e: self.this_is_a_canvas.configure(
                                       scrollregion=self.this_is_a_canvas.bbox('all')))
        """
        this_second_frame = Frame(self.this_is_a_canvas)
        self.this_is_a_canvas.create_window((0, 0), window=this_second_frame, anchor='nw')
        # bind on "this_second_frame" instead
        this_second_frame.bind('<Configure>',
                                   lambda e: self.this_is_a_canvas.configure(
                                       scrollregion=self.this_is_a_canvas.bbox('all')))
“”“
#不绑定“self.这是一张画布”
赛尔夫。这是一张画布。绑定(“”,
lambda e:self.this_是_a_canvas.configure(
scrollregion=self。这是\u a\u canvas.bbox('all'))
"""
此第二帧=帧(自身。此为画布)
self.this是画布。创建窗口((0,0),窗口=这个第二帧,anchor='nw')
#改为绑定“第二帧”
这是第二帧绑定(“”,
lambda e:self.this_是_a_canvas.configure(
scrollregion=self。这是\u a\u canvas.bbox('all'))

我更新了代码,使其运行良好。它是可运行的,但肯定不是,也不是可理解的。我看到一些事情是错误的,但没有一件会导致问题。这是否回答了你的问题?工作谢谢你。