立即学习: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 osimage_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 osimage_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()#将窗体类实例化