1. 程式人生 > >wx.ScrolledWindow (或 ScrolledPanel ) 中的滾動條

wx.ScrolledWindow (或 ScrolledPanel ) 中的滾動條

首先,ScrolledWindow和ScrolledPanel的關係是

object --+                        
         |                        
    Object --+                    
             |                    
    EvtHandler --+                
                 |                
            Window --+            
                     |            
                 
Panel --+ | ScrolledWindow --+ | PyScrolledWindow --+ | ScrolledPanel

其中有三個方法

  1. SetScrollRate(xstep, ystep)
  2. SetScrollBars(pixelsPerUnitX, pixelsPerUnitY, noUnitsX, noUnitsY, xPos=0, yPos=0, noRefresh=False)
  3. Scroll(x, y)

其中有個概念叫滾動單位:即滾動條一次移動所引起視窗中的移動距離。

先說方法2,SetScrollBars:

  1. pixelsPerUnitX和pixelsPerUnitY即滾動單位大小,接下來的兩個引數noUnitsX和noUnitsY使你能夠按滾動單位設定滾動區域的尺寸。
  2. 換句話說,滾動區域的象素尺寸是(pixelsPerUnitX * noUnitsX, pixelsPerUnitY * noUnitsY)。
  3. 引數xPos和yPos以滾動單位(非畫素)為單位,它設定滾動條的初始位置。
  4. 如果引數noRefresh為true,那麼就阻止了在因SetScrollbars()的呼叫而引起的滾動後的視窗的自動重新整理。

再說方法1,SetScrollRate:

  • xstep和ystep其實就是SetScrollBars中的pixelsPerUnitX和pixelsPerUnitY。
  • 這兩個方法的區別在於:
    • SetScrollRate要和另外一個方法SetVirtualSize(size)(它是Window類中的方法,因為繼承關係所以也可以呼叫)一起使用,size = (pixelsPerUnitX * noUnitsX, pixelsPerUnitY * noUnitsY)

最後說方法3,Scroll:

  • Scroll(x, y)函式很容易理解,就是將視窗滾動到某個位置,但是要注意的是,x, y引數是滾動單位。

為什麼要強調這個,因為當我在動態新增元件,需要將按鈕位置固定在螢幕上時,需要呼叫Scroll來處理。

程式碼如下:

panel.SetScrollbars(0, 20, 0, 20)
sizer.Layout() # 動態插入元件後要呼叫Layout來重新佈局
y = self.btn.GetPosition()[1] # 獲取按鈕位置
panel.Scroll(0, (y - self.size[1] / 2) / 20) # self.size為視窗大小
最後 (y - self.size[1] / 2 ) / 20 裡面的20就是pixelsPerUnitY,這樣才能定位到正確的位置

相關推薦

wx.ScrolledWindow ( ScrolledPanel ) 滾動

首先,ScrolledWindow和ScrolledPanel的關係是 object --+ | Object --+

jsp 去掉頁面右邊下邊的滾動

設定body的高度小於原來的高度,可以去掉右側的滾動條,但是<body  style="height:410px">不起作用,所以在body下加一個div,設定高度即可。程式碼如下: <body >  <div style="height:41

selenium之 如何控制網頁內嵌div滾動滾動

很多人疑惑怎麼用selenium控制網頁div中滾動條的滾動,其實這個問題很簡單,用JS很簡單就可以實現。 示例HTML程式碼如下: <!DOCTYPE html> <

MFC滾動的使用 CScrollBar

新建一個mfc基於對話方塊的工程 1、建立 在標頭檔案中定義一個滾動條成員變數 CSrcollBar m_wndSrcollBar; 在對話方塊的初始化函式裡面初始化滾動條 m_wndScrollBar.Create(WS_CHILD | WS_VISIBLE | SB_

在頁面有overflow-y:auto屬性的div,當出現滾動,點擊返回頂部按鈕,內容回這個div最頂部

1.8 auto class blog click scrip title over nbt <!doctype html> <html lang="en"> <head> <meta charset="UTF-8">

C# 在RichTextBox滾動鼠標時滾動的是父窗口的滾動

下載 pan private http text ole console ping 滾動 1. RichTextBox u2 = new RichTextBox(); 2. 先記住日RichTextBox沒有顯示滾動條時的總寬度和顯示寬度   u2.Width - u2

隨機獲得MySQL數據庫100數據方法 駕照題庫項目 MVC架構 biz業務層的實現類 根據考試類型randorder通過dao數據訪問層接口得到數據庫100全部數據

mysql數據庫 imp swift mvc架構 als new util pack gson package com.swift.jztk.biz; import java.util.Collections; import java.util.Comparator;

jQuery獲取文檔的高度、可視區域高度以及滾動距頁面頂部的高度

doc 支持 document span ros p s margin window 窗口 在寫頁面的時候,經常會碰到這樣的情況,就是要獲取文檔的高度、可視區域高度或者滾動條距頁面頂部的高度等情況。 但我總是有些愛搞混淆了,這裏還是簡單做個筆記吧,這裏只限於使用jQuer

Qt隱藏滾動重新實現鼠標滾輪事件wheelEvent

spa pan del 滾輪 重載方法 div qt5 delta event delta()已經被棄用了,QT5中用的是angleDelta(),計算的時候取angleDelta().y()值。 #重載方法wheelEvent(self,event),即滾輪事件

CSS隱藏滾動的方法

4.0 pan XML 保持 水平 區別 來看 精確 為我 xhtml中隱藏滾動條 在用ie6瀏覽有框架的xhtml頁面的時候,默認會水平和垂直滾動條會一起出現,這是ie6的一個 bug,在firefox上是正常的,出現的原因是其對XHTML 1.0 transition

jquery的scrollTop控制瀏覽器的滾動

nim set ie6 可視化 best 定位 pat htm 位置  jQuery獲取的相關方法  jquery 獲取滾動條高度獲取瀏覽器顯示區域的高度 : $(window).height(); 獲取瀏覽器顯示區域的寬度 :$(window).width(); 獲取頁面

Jquery 判斷滾動到達頂部底部 (可用於上拉下拉加載刷新)

ready UNC 判斷 獲取 scrip () ext 上拉 fun <script type="text/javascript"> $(document).ready(function() { $(window).scroll(fun

正文隱藏滾動

正文中因為內容多而螢幕長度是固定的,所以一個螢幕顯示不完需要滾動條來幫助,可是有滾動條出現的話,介面友好性又較差。 最後的解決方案是:仍然需要滾動條(不然選單沒法完全展示)只是讓滾動條隱藏就行了。以下是jsp中具體的做法: 首先定義一個樣式: <style

內容超出DIV寬高後隱藏出現滾動和overflow的屬性

div{overflow:hidden} 這樣設定後,假如DIV物件設定一定寬度高度,此時加入overflow:hidden將會隱藏超出DIV寬度高度的內容包括圖片。   overflow 一共有5個屬性 1、ov

MFCEdit控制元件垂直滾動時,當文字超出時再顯示垂直滾動

現在我需要實現這樣一個功能:      想要用edit控制元件本身的滾動條,並且設定該屬性,但是該滾動條會一直存在。效果如下圖,很是難看,當沒有輸入資訊時,也會出現垂直滾動條 其實,只有在文字超過設定的區域內才會顯示(在這我不知道如何上傳動態效果圖片,

jquery的mCustomScrollbar滾動: 無法獲取未定義 null 引用的屬性“frameElement”

原文地址:這裡寫連結內容 在ie8下如果一個頁面巢狀一個包含mCustomScrollbar滾動條那麼如果推動滾動條就會報無法獲取未定義或 null 引用的屬性“frameElement”的錯誤 。 搜尋一下程式碼 var o=t.type,a=t.target.ownerDocu

Web APIs螢幕(Screen)、視窗(Window)、元素(Element)的高度、寬度、滾動總結

1 screen // 螢幕:1440 * 900 screen.height // 1440 screen.width // 900 // 雙螢幕,根據主螢幕位置和工作列位置,值會變化 // 這裡,左側為主螢幕(1366 * 768),工作列垂直放置在主螢幕右側 screen.a

VS程式設計,WPF兩個滾動 ScrollViewer 同步滾動的一種方法

這裡以兩個ScrollViewer控制元件之間的同步滾動為例。 當滑鼠拖動其中一個滾動條時,另一個滾動條跟著一起調整到相應的位置。   1、前臺建立兩個ScrollViewer控制元件,並分別給兩個滾動條控制元件命名。 <Stack

Qt QListWidget QTreeWidget QComboBox等控制元件,禁用滾動的右鍵選單

有時候在開發新控制元件的時候,會偶然點到滾動條的右鍵選單,出現之後很難看 那麼怎麼去掉呢? 其實很簡單,如果是QListWidget ,QTreeWidget控制元件, //記得包含標頭檔案 #i

vue實現滾動緩慢向上移動的效果

.vue //用於判斷按鈕何時顯示 <div class="btn-top" v-if="scrollHeight > alarmHeight"> <el-button type="info" icon="el-icon-arrow