textWidget中的Tkinter Scrollbar,howto

时间:2017-08-24 22:42:11

标签: python-3.x tkinter

我正在使用python中的一个小型texteditor。 app是我的主人,我正在尝试实现一个textWidget,我想在其中放置一个功能滚动条。

我面临的问题是:

  • 为了让textWidget放置我的滚动条,我必须首先实现我的textWidget。但是已经作为Tk.Text中的参数,我需要为我的滚动条放置yscrollcommand。这意味着我的textWidget将不知道我的滚动条是什么。

如果我转过身,我无法在textWidget中创建我的滚动条,因为它尚未创建。

首先创建textWidget的第一个例子

    # MENU BAR EXAMPLE
    menu_bar = Tk.Menu()
    # Set menu bar as menu for the app
    app.config(menu=menu_bar)
    # Fill menubar with "File" menu
    filemenu = Tk.Menu(app,menu_bar, tearoff=0)
    #filemenu.add_command(label="Exit", command=exit)
    menu_bar.add_cascade(label="File", menu=filemenu)
    menu_bar.add_cascade(label="File2", menu=filemenu)
    filemenu.add_command(label="Exit", command=exit)

    # BUTTON EXAMPLE
    button = Tk.Button(app, text="Exit", command=quit)
    button.pack(side=Tk.BOTTOM, fill=Tk.X)

    # TEXT WIDGET

    textWidget = Tk.Text(textWidget, yscrollcommand=scrollbar.set)
    textWidget.pack(expand=True,fill=Tk.BOTH)

    # SCROLLBAR

    scrollbar=Tk.Scrollbar(textWidget)
    scrollbar.pack(side=Tk.RIGHT, fill= Tk.Y)
    scrollbar.config(command=textWidget.yview)

    #Start the main event loop (i.e. run the tkinter program)
    app.mainloop()


    ######################################################

首先创建滚动条的第二个示例

# MENU BAR EXAMPLE
menu_bar = Tk.Menu()
# Set menu bar as menu for the app
app.config(menu=menu_bar)
# Fill menubar with "File" menu
filemenu = Tk.Menu(app,menu_bar, tearoff=0)
#filemenu.add_command(label="Exit", command=exit)
menu_bar.add_cascade(label="File", menu=filemenu)
menu_bar.add_cascade(label="File2", menu=filemenu)
filemenu.add_command(label="Exit", command=exit)

# BUTTON EXAMPLE
button = Tk.Button(app, text="Exit", command=quit)
button.pack(side=Tk.BOTTOM, fill=Tk.X)

# SCROLLBAR
scrollbar=Tk.Scrollbar(textWidget)
scrollbar.pack(side=Tk.RIGHT, fill= Tk.Y)
scrollbar.config(command=textWidget.yview)

# TEXT WIDGET

textWidget = Tk.Text(textWidget, yscrollcommand=scrollbar.set) 
textWidget.pack(expand=True,fill=Tk.BOTH)

这就是我必须做的工作。但感觉是BadMan,如果我必须创建一个textWidget,创建一个滚动条,然后再创建一个textWidget。

    # MENU BAR EXAMPLE
menu_bar = Tk.Menu()
# Set menu bar as menu for the app
app.config(menu=menu_bar)
# Fill menubar with "File" menu
filemenu = Tk.Menu(app,menu_bar, tearoff=0)
#filemenu.add_command(label="Exit", command=exit)
menu_bar.add_cascade(label="File", menu=filemenu)
menu_bar.add_cascade(label="File2", menu=filemenu)
filemenu.add_command(label="Exit", command=exit)

# BUTTON EXAMPLE
button = Tk.Button(app, text="Exit", command=quit)
button.pack(side=Tk.BOTTOM, fill=Tk.X)

# TEXT WIDGET

textWidget = Tk.Text(app)
textWidget.pack(expand=True,fill=Tk.BOTH)

# SCROLLBAR

scrollbar=Tk.Scrollbar(textWidget)
scrollbar.pack(side=Tk.RIGHT, fill= Tk.Y)

textWidget = Tk.Text(textWidget, yscrollcommand=scrollbar.set) # <--- Creating textWidget again

#textWidget.pack(side=Tk.LEFT, fill=Tk.BOTH)
scrollbar.config(command=textWidget.yview)
textWidget.pack(expand=True,fill=Tk.BOTH)


# Start the main event loop (i.e. run the tkinter program)
app.mainloop()

有什么想法吗? =)

1 个答案:

答案 0 :(得分:0)

这需要三个步骤:

  1. 创建文本小部件
  2. 创建滚动条,并将其链接到文本小部件
  3. 将文本小部件链接到滚动条
  4. 如果需要,您可以撤消订单:创建滚动条,然后创建文本,然后配置滚动条。此外,滚动条应放在文本小部件内。文本小部件和滚动条通常共享同一个父级。

    示例:

    textWidget = Tk.Text(app)
    scrollbar = Tk.Scrollbar(app, command=textWidget.yview)
    textWidget.configure(yscrollcommand=scrollbar.set)