tkinter 如何使scrollbar滚动条样式始终处于最底端

Access denied | www.programcreek.com used Cloudflare to restrict access
Please enable cookies.
What happened?
The owner of this website (www.programcreek.com) has banned your access based on your browser's signature (442b7a256ef276fa-ua98).【小发猫】基于AI的NLP伪原创工具
window下的SCROLLbar的使用技巧
windows的组件中,可以说,滚动条是最难的。难就难在如何设置滚动信息上。
首先,在初始化的时候,需要设置SCROLLINFO结构,其中有nMin,nMax,和Page,Pos几个信息。
nMin,nPos一般都设置为0.对于nMax和Page设置就有些技巧。关键是在对page的理解上。page其实就是可见部分的大小。比如,对于一个有滚动条的窗口,page的大小就是客户区(对于垂直滚动条,就是窗口的高度,对于水平滚动条,就是窗口的宽度)。而nMax呢,则是全部要显示的区域。比如对于一个显示文章的程序,如果显示一篇文章,需要1000像素的高度,而窗口只有300像素,那么就可以设置nMax=1000,nPage=300。实际上,我们在滚动条上看到的滑块,就代表者一个页,也就是当前我们看到的窗口。滑块的位置对应的是nPos,大小对应的nPage。
滚动条必须自己处理滚动过程,而窗口的滚动位置、大小都可能变化,所以处理起来也比较麻烦,但是还是有很好的技巧的。
windows发送WM_HSCROLL或者WM_VSCROLL消息来让程序处理滚动。我们可以利用GetScrollInfo获取当前的Pos:即没有发生滚动前的位置。根据滚动的动作:滚动一行、一页或者拖动,我们就可以确定新的位置,用这个位置减去老的位置,就获得偏移量,这个偏移量,就是给ScrollWindow函数调用的。
对于滚动行,用户必须另外指定行的大小
还以上面的为例,简单介绍一下垂直滚动的例子(伪代码,不能编译):
int line=10; //自己定义的行的大小,可以是任何合理的值或者公式case WM_HSCROLL:
SCROLLINFO
si.fMask = SIF_ALL:
si.cbSize = sizeof(si);
GetSCrollInfo(hwnd,SB_VRET,&si); //获得滚动条的信息
int nPos=si.nP
switch(LOWORD(wParam))
//wParam的低字是滚动条的动作
case SB_LINEUP:
case SB_LINEDOWN:
case SB_PAGEUP:
nPos -= si.nP
case SB_PAGEDOWN:
nPos += si.nP
case SB_THUMBPOSITION:
nPos = HIWORD(wParam); //wParam的高位是用户拖动的地址
//防止越界
if(nPos&si.nMax) nPos = si.nM
if(nPos&si.nMin) nPos = si.nM
//滚动窗口
ScrollWindow(hWnd,0,si.nPos-nPos,NULL,NULL); //如果是向下滚动,则偏移量为负值,向上滚动,则是正值
si.nPos = nP //设置新的值
SetScrollInfo(hwnd,SB_VRET,&si,FALSE);
如果窗口的大小发生了变化,SCROLLINFO可能需要调整。但是这时nPos的位置可能不是0。其实,Pos的值根本不用变化。因为我们使用的都是像素,无论窗口的大小如何变化,即:nPage如何变化,nMax是不变的:除非文章发生变化,所以nPos根本不需要变化。对于一些可变编辑的文章,文章的长度时时变化,也就是nMax在变化,那么我们只要保证nPos不会超出nMin~nMax就可以了。
没有更多推荐了,让时间掷地有声
Python Tkinter 之Scrollbar控件(Python GUI 系列13)
Python Tkinter 之Scrollbar控件(Python GUI 系列13)1. 序言
本章介绍Tkinter的Scrollbar控件,本文是Python GUI系列的第13篇文章,整个系统约20篇博客,将全面的介绍Python Tkinter常用控件,最后还将基于Tkinter搭建两个比较完整的小项目。2. 环境信息********************************本系列运行平台:Mac OS 10.13.4Python 版本:3.6.4********************************
3. Scrollbar
Scrollbar(滚动条),可以单独使用,但最多的还是与其它控件(Listbox,Text,Canva等)结合使用。使用方式为Scorllbar(root, option...).常用的参数列表如下:参数描述master代表了父窗口bg背景色,如bg=”red”, bg="#FF56EF"relief指定外观装饰边界附近的标签,默认是平的,可以设置的参数:flat、groove、raised、ridge、solid、sunkenwidth设置显示宽度,如果未设置此项,其大小以适应内容标签bd设置Button的边框大小;bd(bordwidth)缺省为1或2个像素 4. 实例from tkinter import *
#初始化Tk()
myWindow = Tk()
myWindow.title('Python GUI Learning')
scrollbar = Scrollbar(myWindow)
scrollbar.pack( side = RIGHT, fill = Y )
mylist = Listbox(myWindow, yscrollcommand = scrollbar.set)
for line in range(10):
mylist.insert(END, "This is line number " + str(line))
mylist.pack( side = LEFT, fill = BOTH )
scrollbar.config( command = mylist.yview )
#进入消息循环
myWindow.mainloop()
运行结果:
扫码向博主提问
非学,无以致疑;非问,无以广识
擅长领域:
Tkinter教程之Scrollbar篇
Python的GUI编程(八)Scrollbar(滚动条)
Python Tkinter Scrollbar控件
python GUI编程——Scrollbar&&Listbox
解决Tkinter中grid/pack布局中的listbox,scrollbar组合横置
python-tkinter-Scrollbar
python滚动条操作
Python_给tkinter的frame加滚动条
Python 文件管理器,Treeview,Scrollbar,
没有更多推荐了,Tkinter的Scrollba组件
虽然滚动条是作为一个独立的组件存在,不过他平时都是与其他组件配合使用的
为了在某个组件上安装垂直滚动条,需要做两件事:
1.设置该组件的yscrollbarcommand选项为Scrollbar的set()方法
2.设置Scrollbar组件的command选项为该组件的yview()方法
from tkinter import *
root = Tk()
sb = Scrollbar(root)
sb.pack(side=RIGHT, fill=Y)
lb = Listbox(root, yscrollcommand=sb.set)
for i in range(1000):
lb.insert(END, str(i))
lb.pack(side=LEFT, fill=BOTH)
sb.config(command=lb.yview)
mainloop()
没有更多推荐了,tkinter 如何使scrollbar滚动条始终处于最底端_百度知道
tkinter 如何使scrollbar滚动条始终处于最底端
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
热心网友知道合伙人
加线程,在线程里用thread.sleep(时间),再调用label.settext,然后就可以kill这个线程了
雨曼丽知道合伙人
来自电脑网络类芝麻团
采纳数:205
获赞数:41
参与团队:
tkinter 如何使scrollbar滚动条始终处于最底端加线程,在线程里用thread.sleep(时间),再调用label.settext,然后就可以kill这个线程了
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 滚动条 的文章

 

随机推荐