我在编写Python时再次遇到一些问题,希望寻求帮助。我继续构建“列表框”窗口小部件,但无法设置滚动条。我可以将滚动条放置在正确的位置,但是,上下滚动不起作用,并弹出一个错误,提示“ Object()不带参数”。有人可以建议如何解决吗?我附上以下代码以供参考。

import tkinter
from tkinter import *

def test():
    root = tkinter.Tk()
    lst = ['1', '2', '  3', '4', '5', '  6', '7', '8', '  9', '10']
    a = MovListbox(root, lst)
    a.grid(row=0, column=0, columnspan=2, sticky=tkinter.N)
    root.mainloop()

class MovListbox(tkinter.Listbox):

    def __init__(self, master=None, inputlist=None):
        super(MovListbox, self).__init__(master=master)

        # Populate the news category onto the listbox
        for item in inputlist:
            self.insert(tkinter.END, item)

        #set scrollbar
        s = tkinter.Scrollbar(master, orient=VERTICAL, command=tkinter.YView)
        self.configure(yscrollcommand=s.set)
        s.grid(row=0, column=2, sticky=tkinter.N+tkinter.S)

if __name__ == '__main__':
    test()

最佳答案

首先,您同时不需要import tkinterfrom tkinter import *


使用import意味着您需要tkinter.'function'来调用一个函数
来自tkinter
使用from意味着您可以像在您的函数中一样调用该函数
开头没有tkinter.的程序
使用*意味着从tkinter获得所有功能


我也根据Rawig的答案修复了代码

import tkinter

def test():
    root = tkinter.Tk()
    lst = ['1', '2', '  3', '4', '5', '  6', '7', '8', '  9', '10']
    a = MovListbox(root, lst)
    a.grid(row=0, column=0, columnspan=2, sticky=tkinter.N)
    root.mainloop()

class MovListbox(tkinter.Listbox):

    def __init__(self, master=None, inputlist=None):
        super(MovListbox, self).__init__(master=master)

        # Populate the news category onto the listbox
        for item in inputlist:
            self.insert(tkinter.END, item)

        #set scrollbar
        s = tkinter.Scrollbar(master, orient=VERTICAL, command=self.yview)
        self.configure(yscrollcommand=s.set)
        s.grid(row=0, column=2, sticky=tkinter.N+tkinter.S)

if __name__ == '__main__':
    test()

关于python - tkinter.Listbox滚动条yview,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39084403/

10-15 21:34