学习笔记(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()#将窗体类实例化
相关文章
- 【Python】python 多线程两种实现方式
- python基础学习笔记(六)
- python进阶学习笔记(二)
- Python的dict字典结构操作方法学习笔记
- python初步笔记
- 机器学习笔记 - Py-Feat基于Python的面部表情分析
- Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(LabelFrame/Checkbutton/Radiobutton)
- Python语言学习之数值、小数、空格那些事:python和数值、小数、空格的使用方法之详细攻略
- Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略
- 〖Python 数据库开发实战 - Python与MySQL交互篇⑩〗- 创建新闻管理系统的具体python文件
- 学习笔记 | Python入门教程
- Python数模笔记-Sklearn(4)线性回归
- Python数模笔记-模拟退火算法(3)整数规划问题
- Python编程语言学习:python中浅复制/深复制(或浅拷贝/深拷贝)的简介、案例应用注意事项之详细攻略
- Python学习笔记九之Opencv图像基本操作
- Python学习笔记四之数据结构、模块
- Docker学习笔记17:docker实例之安装 Node.js、PHP、MySQL、Tomcat、Python、Redis、MongoDB、Apache
- 强化学习笔记:基于策略的学习之策略迭代(python实现)