91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Tkinter滾動條Scrollbar的實現方法

發布時間:2021-07-24 14:54:26 來源:億速云 閱讀:695 作者:chen 欄目:大數據

本篇內容介紹了“Tkinter滾動條Scrollbar的實現方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

首先構建一個用于顯示信息的標簽控件:

label = Label(root, width = 50)label.grid(row=0, column=0, columnspan=2)

接下來構建第一個Scrollbar控件。如果不做任何處理的話,用戶雖然可以拖動滑塊,但一旦釋放鼠標,滑塊就會回到原來位置。為了解決這個問題,代碼中實現了一個on_scroll函數。

def on_scroll(*args):    pos = scroll_bar.get()    print(pos)    page = 0.1    if args[0]=='scroll':        if args[2]=='units':            first =  pos[0] + int(args[1])* 0.01        elif args[2]=='pages':            first =  pos[0]  + int(args[1])* 0.1        else:            first = 0    elif args[0]=='moveto':        first = float(args[1])    else:        first = 0    scroll_bar.set(first,first + 0.1)    label.config(text=str(args))
scroll_bar = Scrollbar(root, orient = HORIZONTAL, command=on_scroll)scroll_bar.grid(row = 1, column=0, columnspan=2, sticky=W+E)

函數首先判斷on_scroll的參數,如果一個參數是'scroll',則意味著本次通次是用戶的滾動操作,而滾動又分為兩種:一種是鼠標點擊兩端小三角時產生的以'unit'為單位的滾動,另一種是鼠標點擊滑塊以外的空白區域時產生的以'page'為單位的滾動。中間的參數可以是1或者-1,用于表明滾動的方向。

如果用戶直接拖動滑塊,則會產生一個'moveto'事件,它的參數是滑塊的位置。

on_scroll對事件信息進行適當的處理之后調用Scrollbar的set方法分別指定滑塊的開始位置和結束位置才能實現滑塊按照操作移動的功能。需要說明的是:Scrollbar并沒有提供指定滾動范圍的功能,這個范圍固定為[0,1]。

這種方式雖然可以使用Scrollbar實現滾動功能,但是每次都要自己編寫處理相應滾動事件的代碼,過程比較繁瑣。于是我們在本連載中第一次引入類的概念,對滾動條功能進行簡單的封裝之后,提供一個ScrollbarEx類:

class ScrollbarEx(Scrollbar):    def __init__(self, master, **args):        arg_dict = copy.copy(args)        try:            self.min = arg_dict.pop('min')        except KeyError:            self.min = 0        try:            self.max = arg_dict.pop('max')        except KeyError:            self.max = 1        try:            self.page = arg_dict.pop('page')        except KeyError:            self.page = 0.1        try:            self.unit = arg_dict.pop('unit')        except KeyError:            self.unit = 0.01        try:            self.on_scroll = arg_dict.pop('on_scroll')        except KeyError:            pass        arg_dict.update(command = self.scroll_handler)        Scrollbar.__init__(self, master, arg_dict, )        self.scroll_handler()
   def scroll_handler(self, *args):        pos = self.get()        span = self.max - self.min        page = self.page / span        unit = self.unit / span        first = 0        if args:            if args[0]=='scroll':                if args[2]=='units':                    first =  pos[0] + int(args[1])* unit                elif args[2]=='pages':                    first =  pos[0]  + int(args[1])* page                else:                    first = 0            elif args[0]=='moveto':                first = float(args[1])            else:                first = 0        self.set(first, first + page)        if self.on_scroll:            self.on_scroll(int(self.min + first * span),                           int(self.min + first * span + self.page))

ScrollBarEx所做的事情和前面說明的滾動事件處理沒有什么不同,目的只是在于簡化用戶的使用過程。有了這個類,用戶可以可Scrollbar同樣的感覺使用滾動條功能:

def on_scroll_ex(first, last):    label.config(text="first={},last={}".format(first, last))
scrollbar_ex = ScrollbarEx(root, min=0, max=100,                           page=10, unit=2,                           on_scroll=on_scroll_ex,                           orient = HORIZONTAL)scrollbar_ex.grid(row=2, column=0, columnspan=2, sticky=W+E)

用戶要做的只是通過min,max,page,unit幾個單數指定滾動的范圍,頁滾動距離,單位滾動距離等信息而不用關心事件處理的細節。

“Tkinter滾動條Scrollbar的實現方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

波密县| 皋兰县| 苍梧县| 霸州市| 甘南县| 海晏县| 常熟市| 沐川县| 开封市| 靖边县| 肇东市| 嘉鱼县| 江孜县| 武安市| 岱山县| 内黄县| 博爱县| 武威市| 甘谷县| 德钦县| 龙州县| 邹平县| 沂水县| 漳平市| 和龙市| 杭锦后旗| 青川县| 田阳县| 怀宁县| 抚松县| 黄大仙区| 浪卡子县| 左贡县| 梨树县| 县级市| 江川县| 孝义市| 若尔盖县| 义马市| 紫云| 嵊州市|