zl程序教程

您现在的位置是:首页 >  后端

当前栏目

学习笔记(55):Python实战编程-Scrollbar

2023-09-11 14:21:45 时间

立即学习:https://edu.csdn.net/course/play/19711/343118?utm_source=blogtoedu

1.滚动条ScrollBar:

当列表内容项的内容过多时,就需要使用到这个滚动条来进行拖动显示更多的其他选项;一般滚动条是和listbox配对使用的

 

2.注意事项:

1)在组件的创建时:应该按照从大到小来进行;

2)在组件显示时,应该按照组件从小到大来进行显示,这样就不会混乱,显示得也不会出错

3)尽量不要进行动态组件的创建,否则任意出错

 

3.知识点:

1)创建:

 self.scrollbar = tkinter.Scrollbar(self.frame)

2)对滚动条进行配置:

self.scrollbar.config(command = self.listbox.yview)
#将组件滚动条配置给了listbox

3)对滚动条进行位置布局

self.scrollbar.pack(side = tkinter.RIGHT,fill =tkinter.Y)

4)format格式化保留相应的位数

self.listbox.insert("end","[{s:0>3}] linlianqin".format(s=x))

5)滚动条事件的定义

    def scrollbar_event(self,event):
        item = self.listbox.get(self.listbox.curselection())+"\n"#根据当前选中的索引来获得当前选中项的内容
        self.listbox.delete(self.listbox.curselection())#删除当前选中项
        self.content.set(self.content.get()+item)#获得当前标签中含有的文字内容并且加上在listbox中选中的项的内容

 

4.完整代码

import tkinter#导入创建窗体的相关模块
import os

image_path = r'C:\Users\jinlin\Desktop\python_further_study\GUI编程\resources'  + os.sep + 'linlianqin.gif'#因为每个平台的分隔符不一样,所以用os.sep可以自动切换到相应平台的分隔符

class Mainwindow():#创建窗口类
    def __init__(self):
        self.root = tkinter.Tk()#创建主体窗口
        self.root.title('linlianqin')#定义窗体的名字
        self.root.geometry('500x500')#定义窗体的初始大小
        self.root.maxsize(1200,1200)#设置窗口可以显示的最大尺寸
        self.create_scrollbar()
        self.root.mainloop()#显示窗口,这个代码一定要放在所有窗口设置的后面

    #创建滚动条
    def create_scrollbar(self):
        self.frame = tkinter.Frame(self.root,height = 10,width = 200,bg = "#222223")
        self.label = tkinter.Label(self.root,text="选择擅长的语言:")
        self.label.pack(anchor = "w")
        self.listbox = tkinter.Listbox(self.frame)
        for x in range(50):
           self.listbox.insert("end","[{s:0>3}] linlianqin".format(s=x))

        self.listbox.bind("<Double-Button-1>",self.scrollbar_event)

        self.scrollbar = tkinter.Scrollbar(self.frame)
        self.scrollbar.config(command = self.listbox.yview)
        self.scrollbar.pack(side = tkinter.RIGHT,fill =tkinter.Y)
        self.listbox.pack()
        self.frame.pack(anchor="nw")
        self.content = tkinter.StringVar()
        self.content.set("这是您选中的语言项:\n")
        self.show_label = tkinter.Label(self.root,textvariable = self.content,font = ("微软雅黑",15))
        self.show_label.pack(anchor = "sw")

    def scrollbar_event(self,event):
        item = self.listbox.get(self.listbox.curselection())+"\n"#根据当前选中的索引来获得当前选中项的内容
        self.listbox.delete(self.listbox.curselection())#删除当前选中项
        self.content.set(self.content.get()+item)#获得当前标签中含有的文字内容并且加上在listbox中选中的项的内容



if __name__ == '__main__':
    Mainwindow()#将窗体类实例化

 

5.总结:该滚动条未实现滚动到一定的位置就停止在那个地方,会在鼠标左键松开的时候滚动块胡会自动回弹到最初位置

 

6.启发而写的代码

import tkinter#导入创建窗体的相关模块
import os

image_path = r'C:\Users\jinlin\Desktop\python_further_study\GUI编程\resources'  + os.sep + 'linlianqin.gif'#因为每个平台的分隔符不一样,所以用os.sep可以自动切换到相应平台的分隔符

class Mainwindow():#创建窗口类
    def __init__(self):
        self.root = tkinter.Tk()#创建主体窗口
        self.root.title('linlianqin')#定义窗体的名字
        self.root.geometry('500x500')#定义窗体的初始大小
        self.root.maxsize(1200,1200)#设置窗口可以显示的最大尺寸
        self.create_scrollbar()
        self.showlistbox()
        self.root.mainloop()#显示窗口,这个代码一定要放在所有窗口设置的后面

    #创建滚动条
    def create_scrollbar(self):
        self.frame = tkinter.Frame(self.root,height = 10,width = 200,bg = "#222223")
        self.label = tkinter.Label(self.root,text="选择擅长的语言:")
        self.label.pack(anchor = "w")
        self.listbox = tkinter.Listbox(self.frame)
        for x in range(50):
           self.listbox.insert("end","[{s:0>3}] linlianqin".format(s=x))

        self.listbox.bind("<Double-Button-1>",self.scrollbar_event)

        self.scrollbar = tkinter.Scrollbar(self.frame)
        self.scrollbar.config(command = self.listbox.yview)
        self.scrollbar.pack(side = tkinter.RIGHT,fill =tkinter.Y)
        self.listbox.pack()
        self.frame.pack(anchor="nw")
        # self.content = tkinter.StringVar()
        # self.content.set("这是您选中的语言项:\n")
        # self.show_listbox = tkinter.Listbox(self.root,font = ("微软雅黑",15))
        # self.show_listbox.insert("end","这是您选择的语言:")
        #
        # self.show_listbox.pack(anchor = "ne")

    def showlistbox(self):
        self.show_frame = tkinter.Frame(self.root, height=10, width=300, bg="#222223")
        self.show_listbox = tkinter.Listbox(self.show_frame, font=("微软雅黑", 15))
        self.show_scrollbar = tkinter.Scrollbar(self.show_frame)
        self.show_scrollbar.config(command=self.show_listbox.yview)
        self.show_scrollbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
        self.show_listbox.insert("end", "这是您选择的语言:")
        self.show_listbox.pack()
        self.show_frame.pack(anchor="ne")

    def scrollbar_event(self,event):
        item = self.listbox.get(self.listbox.curselection())+"\n"#根据当前选中的索引来获得当前选中项的内容
        self.listbox.delete(self.listbox.curselection())#删除当前选中项
        self.show_listbox.insert("end",item)#获得当前标签中含有的文字内容并且加上在listbox中选中的项的内容



if __name__ == '__main__':
    Mainwindow()#将窗体类实例化