魚cノート——PythonのGUIプログラミング(五):TkinterコンポーネントListbox、Scrollbar、Scale

4701 ワード

Listboxコンポーネントは、リストボックスの形式でオプションを表示し、スクロールバー操作をサポートします.したがって、多くのオプションを提供するのに適しています.
 
  • from tkinter import *
  •  
  • master = Tk()
  •  
  • theLB = Listbox(master)
  • theLB.pack()
  •  
  • #theLB.insert(0, '') # Listbox , 。 END
  • for item in [' ', ' ', ' ']:
  • theLB.insert(END, item) #END 。 ,END 0; ,END 1
  •  
  • '''
  • theLB.delete(0, END)
  • # Listbox 。 :
  • # ,
  • '''
  •  
  • #
  • theButton = Button(master, text=' ', \
  • command=lambda x=theLB:x.delete(ACTIVE)) #ACTIVE
  • theButton.pack()
  •  
  • mainloop()

  •  
    Listboxコンポーネントはselectmodeオプションに基づいて4つの異なる選択モードを提供します:SINGLE(ラジオ)、BROWSE(ラジオでもありますが、マウスをドラッグしたり方向キーで直接オプションを変更したりすることができます)、MUTICLE(マルチ選択)、EXTENDED(マルチ選択ですが、ShiftキーまたはCtrlキーを同時に押したり、マウスをドラッグしたりする必要があります).デフォルトはBROWSEです.
     
     
    Listboxコンポーネントのデフォルトは最大10個の項目しか表示できませんが、11個の項目があればどうしますか?
    Listbox内でマウスホイールをスライドさせることで最後のホイールを現すことができますが、無視されやすいです.
    回避するには、次の2つの方法があります.
    ①heightオプションを変更します.heightオプションは、Listbox表示の行数(ピクセルではない)を設定するためのもので、デフォルト値は10です.
    しかし、1000個などの項目を表示しすぎると、heightを変更するのは適切ではありません.1000行は表示できませんから.
    ②Listboxコンポーネントにスクロールバーを追加できます.
     
     
    Scrolbarスクロールバーコンポーネント:
    スクロールバーコンポーネントは独立したコンポーネントですが、ほとんどが他のコンポーネントと組み合わせて使用されます.
     
    コンポーネントに垂直スクロールバーを取り付けるには、次の2つのことが必要です.
    1.このコンポーネントのyscrollcommandオプションをScrolbarコンポーネントのset()に設定する方法
    2.Scrolbarコンポーネントのcommandオプションをそのコンポーネントのyview()メソッドとして設定
     
    次に、Listboxにスクロールバーを追加する例を示します.
     
  • from tkinter import *
  •  
  • root = Tk()
  •  
  • sb = Scrollbar(root)
  • sb.pack(side=RIGHT, fill=Y) # , y
  •  
  • lb = Listbox(root, yscrollcommand=sb.set)
  • # Listbox set ,
  •  
  • for i in range(1000):
  • lb.insert(END, i)
  • lb.pack(side=LEFT, fill=BOTH)
  •  
  • # , command
  • sb.config(command=lb.yview) #config
  • #yview Listbox ,
  • # yview
  •  
  • mainloop()

  •  
     
     
    スクロールバーといえば、スクロールバーコンポーネントに似たコンポーネントScaleコンポーネントについて続けます.
    Scaleコンポーネントは、主にスライダによって範囲内の数値を表します.オプション範囲と解像度を設定できます(解像度はステップ長、すなわち精度を指します)
     
  • from tkinter import *
  •  
  • # , Entry , Entry
  • root = Tk()
  •  
  • s1 = Scale(root, from_=0, to=42) # from to, from Python ,
  • s1.pack()
  •  
  • s2 = Scale(root, from_=0, to=200, orient=HORIZONTAL) # Scale , orient
  • s2.pack()
  •  
  • # get
  • def show():
  • print(s1.get(), s2.get())
  •  
  • Button(root, text=' ', command=show).pack()
  •  
  • mainloop()

  •  
    ステップと精度は、オプションtickintervalとresolutionを設定することで変更できます.
     
  • from tkinter import *
  •  
  • root = Tk()
  •  
  • #tickinterval=5 5
  • #resolution , 5 , 5
  • # length ,
  • s1 = Scale(root, from_=0, to=42, tickinterval=5, resolution=5, length=200).pack()
  • s2 = Scale(root, from_=0, to=200, tickinterval=10, orient=HORIZONTAL, length=600).pack()
  •  
  • mainloop()