GUI究極の選択:Tkinter3:チェックボタン、ラジオボタンとLabelFrame。

チェックボタン##
   チェックボタン:チェックボタンは、私たちの共通のチェックボックスボタンである
       (例えば、プログラムの「ターン記号」下の書き込み、)
   その使用を感じるために、チェックボタンをテストする前に

from tkinter import *

root = Tk()

v = IntVar()

c = Checkbutton(root,text="测试一下",variable = v)
c.pack()


mainloop()

ここに画像を挿入説明                 ここに画像を挿入説明
       (分析:まず、ルートまたはトップレベルウィンドウをインスタンス化するために、変数を使用するように、次にV = IntVar()Tkinterのニーズは、チェックボタンインスタンス化され、フィードバックとして、このボタンが選択されているか否かを示す、すなわち、最初のパラメータルートウィンドウ上のボタン、及び第2のパラメータは、ボタンの内容であり、3番目のパラメータは可変パラメータ設定Vである)、その変数に、等背面にフィードバックボタンが選択されているかどうかに等しいです

   見るために、より直感的に性能が選択されたときにVの状態選択されていないために、我々は、ラベルのラベルの内部を示し、それを表示することができます。
ここに画像を挿入説明
ここに画像を挿入説明                 ここに画像を挿入説明

   フロップは書き込みプログラムを開始しました

from tkinter import *

root = Tk()

GIRLS = ["戴安娜","九尾狐妖","卡特","辛德拉"]

v = []

for girl in GIRLS:
    v.append(IntVar())
    b = Checkbutton(root,text = girl,variable = v[-1])
    b.pack()

mainloop()

ここに画像を挿入説明ここに画像を挿入説明ここに画像を挿入説明

       分析(:同じルートウィンドウを初期化し、このサイクルを使用し、そのように先着順、我々のコードにもより簡潔を作るGIRLSリスト、その後、変数vを戻ってきて、私たちは、それぞれのボタンに変数ストアを必要としますそうリストに行く、などサイクルに添加してもよいし、次いでループ内、毎回各ボタンの状態を格納するためのTkinterの変数は、それがリストに追加することができ、その後、インスタンス化チェックボタンボタン、第三引数彼は最後の要素を持ってたびに、それがあるので、-1)

   あなたは、ボタンのオプションがきちんとしていない、我々はアンカーオプションを設定することにより、パックの位置を策定見ることができます。
       「N」、「NE」(アンカーは、彼が値パラメーターボタンに示された位置は、9の方法で設定された)コントロールテキスト(またはイメージで 、「E」、「SE」、「S」、「SW」 、「NW」「W」 、「中央」、 彼らは古いと略語は、東と西を表し、そして、その上に残し、ここでのホールドを取得ewsnある書き込み大文字に時間に注意を払います
ここに画像を挿入説明
ここに画像を挿入説明

ラジオボタン##
   ラジオボタン:ラジオボタンは、ラジオボタンである
       (ラジオボタンの使用及び使用チェックボタンは、基本的に、唯一の違いは、ラジオボタンが相互に排他的なこの効果を達成するために、その後、ラジオの効果を達成するために同じであり、同じグループに必要ですすべてのラジオボタンは、唯一の変数のオプション、および異なる価値オプションの値を設定する必要性を共有することができます。)

from tkinter import *

root = Tk()

v = IntVar()

Radiobutton(root,text = "One",variable = v,value=1).pack(anchor =W)
Radiobutton(root,text = "Two",variable = v,value=2).pack(anchor =W)
Radiobutton(root,text = "Three",variable = v,value=3).pack(anchor =W)

mainloop()

ここに画像を挿入説明
       (解析:一样的,先来个root窗口,然后上面说了多个按钮只需要一个变量,所以v = IntVar()就不用列表了,然后实例化出三个Radiobutt,然后第三个参数他们的variable的值都等于v,共享一个,接着后面要有value,而且他们的值不可以相同,在pick里面在设置一下左对齐。
       然后上面有两次需要注意的,variable只能设置为同样一个变量,设置为v,然后value的值一定要不同才能实现互斥,
       这个原理其实就是,每一次点中一个,比如点中了Two,那么他会把按钮的值即value =2赋给了v,给了这个v就说明他点中了,和其他两个一对比,上面的variable的值不少,下面的variable的值不是3,所以呢他们两个就不显示,v是等于2,和value=2是匹配的,这样就实现了互斥,单点了
       如果上面那个value也是2的话,那么问题就来了,只要点One和Two其中一个,两个就会同时显示)

       如果有多个选项的话,我们仍然可以使用循环,使得代码更加简洁:

from tkinter import *

root = Tk()

LANGS = [
    ("Python",1),
    ("Perl",2),
    ("Ruby",3),
    ("Lua",4)]


v = IntVar()
v.set(1)

for lang, num in LANGS:
    b = Radiobutton(root,text=lang,variable=v,value=num)
    b.pack(anchor = W)


mainloop()

ここに画像を挿入説明

   ※ 我们可以通过在Radiobutton的参数里设置:indicatoron = False,indicatoron 就是指示器,就是前面的小圆圈,设置为False就可以去掉小圈圈,变成按钮的形式
ここに画像を挿入説明
ここに画像を挿入説明

       但是这样不太美观,我们可以在pack里设置fill=X就是横向填充按钮,如果设置fill=Y就是纵向填充。
ここに画像を挿入説明
ここに画像を挿入説明
##LabelFrame
   LavelFrame:标签框架,这实际上是 Frame 框架的进化版,从形态上来说,也就是添加了 Label 的 Frame,但是有了它,Checkbutton 和 Radiobutton 的分组就变得简单了。

       比如现在想把刚才代码的四个组件给放到一个Frame里边去:

ここに画像を挿入説明

from tkinter import *

root = Tk()

group = LabelFrame(root,text="最好的脚本语言是?",padx = 5,pady=5)
group.pack(padx=10,pady =10)

LANGS = [
    ("Python",1),
    ("Perl",2),
    ("Ruby",3),
    ("Lua",4)]


v = IntVar()

for lang, num in LANGS:
    b = Radiobutton(group,text=lang,variable=v,value=num)
    b.pack(anchor =W)


mainloop()

ここに画像を挿入説明

公開された247元の記事 ウォンの賞賛116 ビュー280 000 +

おすすめ

転載: blog.csdn.net/w15977858408/article/details/104148732