python之Tkinter控件學習


Tkinter模塊("Tk 接口")是Python的標准Tk GUI工具包的接口,位Python的內置模塊,直接import tkinter即可使用。

作為實踐, 用Tkinter做了個ascii碼轉化查詢表

 

1. 產品介紹

界面

  

功能

  • 通過輸入字符或數字查詢對應的信息
  • 通過選擇列表中的信息查詢對應的信息

2. 設計規划

規划圖

3. 相關知識

首先看怎么產生第一個窗口

from Tkinter import *   #引用Tk模塊
root = Tk()             #初始化Tk()
root.mainloop()         #進入消息循環

幾個常用屬性

  • title: 設置窗口標題
  • geometry: 設置窗口大小
  • resizable():設置窗口是否可以變化長 寬
復制代碼
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry('200x100')                 #是x 不是*
root.resizable(width=False, height=True) #寬不可變, 高可變,默認為True
root.mainloop()
復制代碼

介紹以下幾個控件的用法

  • Label
  • Frame
  • Entry
  • Text
  • Button
  • Listbox
  • Scrollbar

說明每個控件最后要加上pack().否則控件是無法顯示的.

3.1 Label

說明

  標簽

用法

  Label(根對象, [屬性列表])

屬性

  • text    要現實的文本
  • bg    背景顏色
  • font    字體(顏色, 大小)
  • width  控件寬度
  • height 控件高度

  以下介紹的控件差不多都有這幾個屬性, 更詳細的屬性查看參考網頁

舉例

復制代碼
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry('300x200')
l = Label(root, text="show", bg="green", font=("Arial", 12), width=5, height=2)
l.pack(side=LEFT)  #這里的side可以賦值為LEFT  RTGHT TOP  BOTTOM
root.mainloop()
復制代碼

效果

  

3.2 Frame

說明

  在屏幕上創建一塊矩形區域,多作為容器來布局窗體

用法

  Frame(根對象, [屬性列表])

舉例

     要在控件中出現這樣的四個詞語

                 校訓

          厚德        敬業

          博學        樂群     

  可以規划為         

    

復制代碼
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry('300x200')

Label(root, text='校訓'.decode('gbk').encode('utf8'), font=('Arial', 20)).pack()

frm = Frame(root)
#left
frm_L = Frame(frm)
Label(frm_L, text='厚德'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
Label(frm_L, text='博學'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
frm_L.pack(side=LEFT)

#right
frm_R = Frame(frm)
Label(frm_R, text='敬業'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
Label(frm_R, text='樂群'.decode('gbk').encode('utf8'), font=('Arial', 15)).pack(side=TOP)
frm_R.pack(side=RIGHT)

frm.pack()

root.mainloop()
復制代碼

效果

  

 

3.3 Entry

說明

  創建單行文本框

用法

  •   創建:lb =Entry(根對象, [屬性列表])
  •   綁定變量 var=StringVar()    lb=Entry(根對象, textvariable = var)
  •   獲取文本框中的值   var.get()
  •   設置文本框中的值   var.set(item1)

舉例

復制代碼
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry()
var = StringVar()
e = Entry(root, textvariable = var)
var.set("hello")
e.pack()
    
root.mainloop()
復制代碼

效果

  

3.4 Text

說明

  向該空間內輸入文本

用法

  t = Text(根對象)

  插入:t.insert(mark, 內容)

  刪除:t.delete(mark1, mark2)

  其中,mark可以是行號,或者特殊標識,例如

  • INSERT:光標的插入點CURRENT:鼠標的當前位置所對應的字符位置
  • END:這個Textbuffer的最后一個字符
  • SEL_FIRST:選中文本域的第一個字符,如果沒有選中區域則會引發異常
  • SEL_LAST:選中文本域的最后一個字符,如果沒有選中區域則會引發 異常

舉例

復制代碼
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry('300x200')

t = Text(root)
t.insert(1.0, 'hello\n')
t.insert(END, 'hello000000\n')
t.insert(END, 'nono')
t.pack()

root.mainloop()
復制代碼

效果

  

3.5 Button

說明

  創建按鈕

用法

  Button(根對象, [屬性列表])

舉例

復制代碼
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry()

def printhello():
    t.insert('1.0', "hello\n")
    
t = Text()
t.pack()
Button(root, text="press", command = printhello).pack()
root.mainloop()
復制代碼

效果

  

3.6 Listbox

說明

  列表控件,可以含有一個或多個文本想,可單選也可多選

用法

  •   創建:lb = ListBox(根對象, [屬性列表])
  •   綁定變量 var=StringVar()    lb=ListBox(根對象, listvariable = var)
  •   得到列表中的所有值   var.get()
  •   設置列表中的所有值   var.set((item1, item2, .....))
  •   添加:lb.insert(item)
  •   刪除:lb.delete(item,...)
  •   綁定事件 lb.bind('<ButtonRelease-1>', 函數)
  •   獲得所選中的選項 lbl.get(lb.curselection())

屬性

  selectmode可以為BROWSE MULTIPL SINGLE

舉例

復制代碼
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry()

def print_item(event):
    print lb.get(lb.curselection())
    
var = StringVar()
lb = Listbox(root,  listvariable = var)
list_item = [1, 2, 3, 4]         #控件的內容為1 2 3 4
for item in list_item:
    lb.insert(END, item)
lb.delete(2, 4)                  #此時控件的內容為1 3
var.set(('a', 'ab', 'c', 'd')) #重新設置了,這時控件的內容就編程var的內容了 print var.get() lb.bind('<ButtonRelease-1>', print_item) lb.pack() root.mainloop()
復制代碼

效果

  

3.7 Scrollbar

說明

  在屏幕上創建一塊矩形區域,多作為容器來布局窗體

用法

  Frame(根對象, [屬性列表]), 最長用的用法是和別的控件一起使用.

舉例

復制代碼
from Tkinter import *
root = Tk()
root.title("hello world")
root.geometry()

def print_item(event):
    print lb.get(lb.curselection())
    
var = StringVar()
lb = Listbox(root, height=5, selectmode=BROWSE, listvariable = var)
lb.bind('<ButtonRelease-1>', print_item)
list_item = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
for item in list_item:
    lb.insert(END, item)
    
scrl = Scrollbar(root)
scrl.pack(side=RIGHT, fill=Y)
lb.configure(yscrollcommand = scrl.set)
lb.pack(side=LEFT, fill=BOTH)
scrl['command'] = lb.yview

root.mainloop()
復制代碼

效果

  

4. 源碼附件

代碼

# -*- coding:cp936 -*-
from Tkinter import *

class show:
    num_info_hash = {}
    char_info_hash = {}
    num_char = {}
    char_num = {}
    def __init__(self):
        
        self.root = Tk()
        self.root.title("ASCII碼查詢".decode('gbk').encode('utf8'))
        #self.root.geometry('470x320')
        ########
        self.frm = Frame(self.root)
        #Top
        Label(self.root, text="ASCII碼查詢".decode('gbk').encode('utf8'), font=('Arial', 15)).pack()
        self.load_sys()
        self.frm = Frame(self.root)
        #Left
        self.frm_L = Frame(self.frm)
        self.frm_LT = Frame(self.frm_L)
        self.var_char = StringVar()
        Entry(self.frm_LT, textvariable=self.var_char, width = 5, font =('Verdana',15)).pack(side=RIGHT)
        Label(self.frm_LT, text = '字符'.decode('gbk').encode('utf8'), font =('Arial',12)).pack(side=LEFT)
        self.frm_LT.pack()

        self.var_L_char = StringVar()
        self.lb_char = Listbox(self.frm_L, selectmode=BROWSE, listvariable=self.var_L_char, font =('Verdana',12), width=10, height=13)
        self.lb_char.bind('<ButtonRelease-1>', self.get_char)
        for key in self.char_num:
            self.lb_char.insert(END, key[0])
        self.scrl_char = Scrollbar(self.frm_L)
        self.scrl_char.pack(side=RIGHT, fill=Y)
        self.lb_char.configure(yscrollcommand = self.scrl_char.set)
        self.lb_char.pack(side=LEFT, fill=BOTH)
        self.scrl_char['command'] = self.lb_char.yview

        self.frm_L.pack(side = LEFT)

        #Mid
        self.frm_M = Frame(self.frm)
        self.t_show = Text(self.frm_M, width=20, height=5, font =('Verdana',15))
        self.t_show.insert('1.0', '')
        self.t_show.pack()

        self.frm_MB = Frame(self.frm_M)
        Button(self.frm_MB, text="清除".decode('gbk').encode('utf-8'), command=self.clear, width=6, height=1, font=('Arial', 10)).pack(side=LEFT)
        Button(self.frm_MB, text="查詢".decode('gbk').encode('utf-8'), command=self.search, width=6, height=1, font=('Arial', 10)).pack(side=RIGHT)
        self.frm_MB.pack(side=BOTTOM)

        self.frm_M.pack(side=LEFT)
        
        #Right
        self.frm_R = Frame(self.frm)
        self.frm_RT = Frame(self.frm_R)
        self.var_int = StringVar()
        Entry(self.frm_RT, textvariable=self.var_int, width=5, font =('Verdana',15)).pack(side=LEFT)
        Label(self.frm_RT, text='十進制'.decode('gbk').encode('utf-8'), font =('Arial',12)).pack(side=RIGHT)
        self.frm_RT.pack()
        self.var_R_int = StringVar()
        self.lb_int = Listbox(self.frm_R, selectmode=BROWSE, listvariable=self.var_R_int, font =('Verdana',12), width=10, height=13)
        self.lb_int.bind('<ButtonRelease-1>', self.get_int,)
        for key in self.num_char:
            self.lb_int.insert(END, key[0])
        self.scrl_int = Scrollbar(self.frm_R)
        self.scrl_int.pack(side=RIGHT, fill=Y)
        self.lb_int.configure(yscrollcommand = self.scrl_int.set)
        self.lb_int.pack(side=LEFT, fill=BOTH)
        self.scrl_int['command'] = self.lb_int.yview

        self.frm_R.pack(side = LEFT)

        self.frm.pack()
        ########

        
    def get_char(self, event):
        self.var_char.set('')
        self.var_int.set('')
        tmp = self.lb_char.get(self.lb_char.curselection())
        self.var_char.set(tmp)
    def get_int(self, event):
        self.var_int.set('')
        self.var_char.set('')
        tmp = self.lb_int.get(self.lb_int.curselection())
        self.var_int.set(tmp)
    def clear(self):
        self.var_char.set('')
        self.var_int.set('')
        self.t_show.delete('1.0', '10.0')
    def search(self):
        self.t_show.delete('1.0', '100.0')
        tmp_char = self.var_char.get()
        tmp_int = self.var_int.get()
        if tmp_char != '':
            if not self.char_info_hash.has_key(tmp_char):
                self.t_show.insert('1.0', "您輸入的字符不在128個字符之內".decode('gbk').encode('utf8'))
            else:
                self.t_show.insert('1.0', '十六進制:'.decode('gbk').encode('utf8') + '\t' + self.char_info_hash[tmp_char][2] + '\n')
                self.t_show.insert('1.0', '十進制:'.decode('gbk').encode('utf8') +'\t' + self.char_info_hash[tmp_char][1] + '\n')
                self.t_show.insert('1.0', '八進制:'.decode('gbk').encode('utf8') + '\t' + self.char_info_hash[tmp_char][0] + '\n')
                self.t_show.insert('1.0', '字符:'.decode('gbk').encode('utf8') +'\t' + tmp_char + '\n\n')
            self.var_char.set('')
            self.var_int.set('')
        elif tmp_int !='':
            if not self.num_info_hash.has_key(tmp_int):
                self.t_show.insert('1.0', "請輸入介於0~127之間的整數".decode('gbk').encode('utf8'))
            else:
                self.t_show.insert('1.0', '字符:'.decode('gbk').encode('utf8') +'\t' + self.num_info_hash[tmp_int][2] + '\n')
                self.t_show.insert('1.0', '十六進制:'.decode('gbk').encode('utf8') + '\t' + self.num_info_hash[tmp_int][1] + '\n')
                self.t_show.insert('1.0', '八進制:'.decode('gbk').encode('utf8') + '\t' + self.num_info_hash[tmp_int][0] + '\n')
                self.t_show.insert('1.0', '十進制:'.decode('gbk').encode('utf8') + '\t' + tmp_int + '\n\n')
            self.var_char.set('')
            self.var_int.set('')
        else:
            self.t_show.insert('1.0', '請選擇或輸入'.decode('gbk').encode('utf8'))
        
    def load_sys(self):
        f = file('asc')
        for line in f:
            chunk = line.strip().split('\t')
            self.num_char[int(chunk[1])] = chunk[3]
            self.char_num[chunk[3]] = int(chunk[1])
            self.num_info_hash[chunk[1]] = [chunk[0], chunk[2], chunk[3]]
            self.char_info_hash[chunk[3]] = [chunk[0], chunk[1], chunk[2]]

        self.num_char =sorted(self.num_char.iteritems(), key = lambda asd:asd[0])
        self.char_num =sorted(self.char_num.iteritems(), key = lambda asd:asd[1])




def main():
    d = show()
    mainloop()
if __name__== "__main__":
    main()

文本

0    00    nul
   1    01    soh
   2    02    stx
   3    03    etx
   4    04    eot
   5    05    enq
   6    06    ack
   7    07    bel
   8    08    bs
   9    09    ht
   10    0a    nl
   11    0b    vt
   12    0c    ff
   13    0d    er
   14    0e    so
   15    0f    si
   16    10    dle
   17    11    dc1
   18    12    dc2
   19    13    dc3
   20    14    dc4
   21    15    nak
   22    16    syn
   23    17    etb
   24    18    can
   25    19    em
   26    1a    sub
   27    1b    esc
   28    1c    fs
   29    1d    gs
   30    1e    re
   31    1f    us
   32    20    sp
   33    21    !
   34    22    "
   35    23    #
   36    24    $
   37    25    %
   38    26    &amp;
   39    27    `
   40    28    (
   41    29    )
   42    2a    *
   43    2b    +
   44    2c    ,
   45    2d    -
   46    2e    .
   47    2f    /
   48    30    0
   49    31    1
   50    32    2
   51    33    3
   52    34    4
   53    35    5
   54    36    6
   55    37    7
   56    38    8
   57    39    9
   58    3a    :
   59    3b    ;
   60    3c    &lt;
   61    3d    =
   62    3e    &gt;
   63    3f    ?
   64    40    @
   65    41    A
   66    42    B
   67    43    C
   68    44    D
   69    45    E
   70    46    F
   71    47    G
   72    48    H
   73    49    I
   74    4a    J
   75    4b    K
   76    4c    L
   77    4d    M
   78    4e    N
   79    4f    O
   80    50    P
   81    51    Q
   82    52    R
   83    53    S
   84    54    T
   85    55    U
   86    56    V
   87    57    W
   88    58    X
   89    59    Y
   90    5a    Z
   91    5b    [
   92    5c    \
   93    5d    ]
   94    5e    ^
   95    5f    _
   96    60    '
   97    61    a
   98    62    b
   99    63    c
   100    64    d
   101    65    e
   102    66    f
   103    67    g
   104    68    h
   105    69    i
   106    6a    j
   107    6b    k
   108    6c    l
   109    6d    m
   110    6e    n
   111    6f    o
   112    70    p
   113    71    q
   114    72    r
   115    73    s
   116    74    t
   117    75    u
   118    76    v
   119    77    w
   120    78    x
   121    79    y
   122    7a    z
   123    7b    {
   124    7c    |
   125    7d    }
   126    7e    ~
   127    7f    del

Python Tkinter參考資料之(通用控件屬性)

 大部分控件的共享選項:

選項(別名)

說明

單位

典型值

沒有此屬性的控件

background(bg)

當控件顯示時,給出的正常顏色

color

'gray25'
'#ff4400'
 

borderwidth(bd)

設置一個非負值,該值顯示畫控件外圍3D邊界的寬度;(特別的由relief選項決定這項決定).控件內部的3D效果也可以使用該值,該值可以是Tkinter(Tk_GetPixels)接受的任何格式 

pixel

3  

cursor

指定控件使用的鼠標光標,該值可以是Tkinter(Tk_GetPixels)接受的任何格式

cursor

gumby  

font

指定控件內部文本的字體

font

 'Helvetica'
('Verdana',8)
Canvas Frame
Scrollbar
Toplevel 

foreground(fg)

 指定控件的前景色 color  'black'
'#ff2244'
Canvas Frame
Scrollbar
Toplevel 

highlightbackground

指出經過沒有輸入焦點的控件加亮區域顏色  color 'gray30' Menu 

highlightcolor

指出經過沒有輸入焦點的控件周圍長方區域加亮顏色  color  'royalblue'  Menu 

highlightthickness

設置一個非負值,該值指出一個有輸入焦點的控件周圍加亮方形區域的寬度,該值可以是 Tk_GetCursor)接受的任何格式.如果為0,則不畫加亮區域 pixel  2.1m  Menu 

relief

指出控件3D效果.可選值為RAISED,SUNKEN,FLAT,RIDGE,SOLID,GROOVE.該值指出控件內部相對於外部的外觀樣式,比如RAISED意味着控件內部相對於外部突出  constant  RAISED
GROOVE 
 

takefocus

決定窗口在鍵盤遍歷時是否接收焦點(比如Tab,shift-Tab).在設定焦點到一個窗口之前,遍歷腳本檢查takefocus選項的值,值0意味着鍵盤遍歷時完全跳過,值1意味着只要有輸入焦點(它及所有父代都映射過)就接收.空值由腳本自己覺定是否接收,當前的算法是如果窗口被禁止,或者沒有鍵盤捆綁或窗口不可見時,跳過  boolean  1 YES   

width

指定一個整數,設置控件寬度,控件字體的平局字符數.如果值小於等於0,控件選擇一個能夠容納目前字符的寬度

integer

32

Menu

 
很多控件共享的選項:

 

選項(別名)

 

說明

 

單位

 

典型值

 

僅此類控件

activebackground 指定畫活動元素的背景顏色.元素(控件或控件的一部分)在鼠標放在其上並按動鼠標按鈕引起某些行為的發生時,是活動的.如果嚴格的Modf一致性請求通過設置tk_strictModf變量完成,該選項將被忽略,正常背景色將被使用.對Windows和Macintosh系統,活動顏色將只有在鼠標按鈕1被按過元素時使用  color 'red'
'#fa07a3'
Button
Checkbutton
Menu
Menubutton
Radiobutton
Scale
Scrollbar
activeforeground 指定畫活動元素時的前景顏色.參見上面關於活動元素的定義   color 'cadeblue' Button
Menu
Checkbutton
Menubutton
Radiobutton 
anchor 指出控件信息(比如文本或者位圖)如何在控件中顯示.必須為下面值之一:
N,NE,E,SE,S,SW,W,NW或者CENTER.比如NW(NorthWest)指顯示信息時使左上角在控件的左上端
 constant   Button
Checkbutton
Label
Message
Menubutton
Radiobutton 
bitmap  指定一個位圖在控件中顯示,以Tkinter(Tk_GetBitmap)接受的任何形式.位圖顯示的精確方式受其他選項如錨或對齊的影響.典型的,如果該選項被指定,它覆蓋指定顯示控件中文本的其他選;bitmap選項可以重設為空串以使文本能夠被顯示在控件上.在同時支持位圖和圖像的控件中,圖像通常覆蓋位圖  bitmap   Button
Checkbutton
Label
Menubutton
Radiobutton
command  指定一個與控件關聯的命令.該命令通常在鼠標離開控件之時被調用,對於單選按鈕和多選按鈕,tkinter變量(通過變量選項設置)將在命令調用時更新   command  setupData  Button
Checkbutton
Radiobutton
Scale
Scrollbar 
disabledforeground 指定繪畫元素時的前景色.如果選項為空串(單色顯示器通常這樣設置),禁止的元素用通常的前景色畫,但是采用點刻法填充模糊化   color  'gray50' 

Button
Checkbutton
Radiobutton
Menu
Menubutton

height 指定窗口的高度,采用字體選項中給定字體的字符高度為單位,至少為1   integer 1  4  Button
Canvas
Frame
Label
Listbox
Checkbutton
Radiobutton
Menubutton
Text
Toplevel 
image  指定所在控件中顯示的圖像,必須是用圖像create方法產生的.如果圖像選項設定,它覆蓋已經設置的位圖或文本顯示;更新恢復位圖或文本的顯示需要設置圖像選項為空串    image   Button
Checkbutton
Label
Menubutton
Radiobutton 
justify 當控件中顯示多行文本的時候,該選項設置不同行之間是如何排列的,其值為如下之一:
LEFT,CENTER或RIGHT.LEFT指每行向左對齊,CENTER指每行居中對齊,RIGHT指向右對齊 
 constant  RIGHT  Button
Checkbutton
Entry
Label
Menubutton
Message
Radiobutton 
padx  指定一個非負值設置控件X方向需要的邊距.該值為Tkinter(Tk_GetPixels)接受的格式.當計算需要多大的窗口時,控件會把此值加到正常大小之上(由控件中顯示內容決定);如果幾何管理器能夠滿足此請求,控件將在左端或右端得到一個給定的多余空邊.大部分控件只用此項於文本,如果它們顯示位圖或圖像,通常忽略空邊選項   pixels 2m  10  Button
Checkbutton
Label
Menubutton
Message
Radiobutton
Text 
pady  指定一個非負值設置控件Y方向需要的邊距.該值為Tkinter(Tk_GetPixels)接受的格式.當計算需要多大的窗口時,控件會把此值加到正常大小之上(由控件中顯示內容決定);如果幾何管理器能夠滿足此請求,控件將在上端或下端得到一個給定的多余空邊.大部分控件只用此項於文本,如果它們顯示位 圖或圖像,通常忽略空邊選項   pixels 12  3m  Button
Checkbutton
Label
Menubutton
Message
Radiobutton
Text 
selectbackground  指定顯示選中項時的背景顏色   color  blue  Canvas
Listbox
Entry
Text 
selectborderwidth  指定一個非負值,給出選中項的三維邊界寬度,值可以是任何
Tkinter(Tk_GetPixels)接受的格式 
 pixel

Canvas
Entry
Listbox
Text 

selectforeground 指定顯示選中項的前景顏色   color yellow  Canvas
Entry
Listbox
Text 
state 

指定控件下列兩三個狀態之一(典型是復選按鈕):
NORMAL和DISABLED或NORMAL,ACTIVE和NORMAL.在NORMAL狀態,控件有前景色和背景顯示;在ACTIVE狀態,控件按activeforeground和activebackground選項顯示;在DISABLED狀態下,控件不敏感,缺省捆綁將拒絕激活控件,並忽略鼠標行為,此時,由disabled foreground和background選項決定如何顯示 

 constant ACTIVE 

Button
Checkbutton
Entry
Menubutton
Scale
Radiobutton
Text 

text  指定控件中顯示的文本,文本顯示格式由特定控件和其他諸如錨和對齊選項決定   string 'Display'  Button
Checkbutton
Label
Menubutton
Message
Radiobutton 
textvariable  指定一個變量名字.變量值被轉變為字符串在控件上顯示.如果變量值改變,控件將自動更新以反映新值,字符串顯示格式由特定控件和其他諸如錨和對齊選項決定   variable widgetConstant  Button
Checkbutton
Entry
Label
Menubutton
Message
Radiobutton 
underline  指定控件中加入下划線字符的整數索引.此選項完成菜單按鈕與菜單輸入的鍵盤遍歷缺省捆綁.0對應控件中顯示的第一個字符,1對應第二個,以此類推   integer Button
CheckButton
Label
Menubutton
Radiobutton 
wraplength  對於能夠支持字符換行的控件,該選項指定行的最大字符數,超過最大字符數的行將轉到下行顯示,這樣一行不會超過最大字符數.該值可以是窗口距離的任何標准格式.如果該值小於或等於0,不換行,換行只有在文本中的換行符的地方才出現   pixel 41,65  Button
Checkbutton
Label
Menubutton
Radiobutton
xscrollcommand  指定一個用來與水平滾動框進行信息交流的命令前綴,當控件窗口視圖改變(或者別的任何滾動條顯示的改變,如控件的總尺寸改變等等),控件將通過把滾動命令和兩個數連接起來產生一個命令.兩個數分別為0到1之間的分數,代表文檔中的一個位置,0表示文檔的開頭,1.0表示文檔的結尾處,0.333表示整個文檔的三分之一處,如此等等.第一個分數代表窗口中第一個可見文檔信息,第二個分數代表緊跟上一個可見部分之后的信息.然后命令把它們傳到Tcl解釋器執行.
典型的,xscrollcommand選項由滾動條標識跟着set組成,如set.x.scrollbar set將引起滾動條在窗口中視圖變化時被更新.如果此項沒有指定,不執行命令 
 function   Canvas
Entry
Listbox
Text 
yscrollcommand  指定一個用來與垂直滾動框進行信息交流的命令前綴,當控件窗口視圖改變(或者別的任何滾動條顯示的改變,如控件的總尺寸改變等等),控件將通過把滾動命令和兩個數連接起來產生一個命令.兩個數分別為0到1之間的分數,代表文檔中的一個位置,0表示文檔的開頭,1.0表示文檔的結尾處,0.333表示整個文檔的三分之一處,如此等等.第一個分數代表窗口中第一個可見文檔信息,第二個分數代表緊跟上一個可見部分之后的信息.然后命令把它們傳到Tcl解釋器執行.
典型的,yscrollcommand選項由滾動條標識跟着set組成,如set.y.scrollbar set將引起滾動條在窗口中視圖變化時被更新.如果此項沒有指定,不執行命令 
 function   Canvas
Entry
Listbox
Text

 

資料來源——《Python與Tkinter編程》附錄B

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM