Python3 tkinter基础 LabelFrame Radiobutton 形成两组不相互限制的单选按钮

95 阅读2分钟
  •        Python : 3.8.11
  •          OS : Ubuntu Kylin 20.04
  •       Conda : 4.10.1
  •     PyCharm : 2021.1.3 (Community Edition)

左右布局

代码

"""
@Author : 行初心
@Date   : 8/6/21
"""

from tkinter import *


def main():
    root = Tk()

    group1 = LabelFrame(root, text='服器部', padx=5, pady=5)
    group1.pack(side=RIGHT, padx=10, pady=10)

    v = IntVar()
    v.set(3)

    rb1_group1 = Radiobutton(group1, text='锦', variable=v, value=1, indicatoron=False)
    rb1_group1.pack(fill=X)

    rb2_group1 = Radiobutton(group1, text='绢', variable=v, value=2, indicatoron=False)
    rb2_group1.pack(fill=X)

    rb3_group1 = Radiobutton(group1, text='帛', variable=v, value=3, indicatoron=False)
    rb3_group1.pack(fill=X)

    group2 = LabelFrame(root, text='果部', padx=5, pady=5)
    group2.pack(side=LEFT, padx=10, pady=10)

    v2 = IntVar()
    v2.set(2)

    rb1_group2 = Radiobutton(group2, text='李', variable=v2, value=1, indicatoron=False)
    rb1_group2.pack(fill=X)

    rb2_group2 = Radiobutton(group2, text='杏', variable=v2, value=2, indicatoron=False)
    rb2_group2.pack(fill=X)

    rb3_group2 = Radiobutton(group2, text='梅', variable=v2, value=3, indicatoron=False)
    rb3_group2.pack(fill=X)

    mainloop()


if __name__ == '__main__':
    main()

运行结果

labelframe_radiobutton_1.png

上下布局

代码

"""
@Author : 行初心
@Date   : 8/6/21
"""


from tkinter import *


def main():
    root = Tk()

    group1 = LabelFrame(root, text='菜部', padx=5, pady=5)
    group1.pack(padx=10, pady=10)

    v = IntVar()
    # v与value的关系
    v.set(3)

    rb1_group1 = Radiobutton(group1, text='冬瓜', variable=v,
                             value=1, indicatoron=False)
    rb1_group1.pack(fill=X)

    rb2_group1 = Radiobutton(group1, text='南瓜', variable=v,
                             value=2, indicatoron=False)
    rb2_group1.pack(fill=X)

    rb3_group1 = Radiobutton(group1, text='越瓜', variable=v,
                             value=3, indicatoron=False)
    rb3_group1.pack(fill=X)

    group2 = LabelFrame(root, text='谷部', padx=5, pady=5)
    group2.pack(padx=10, pady=10)

    v2 = IntVar()
    v2.set(2)

    rb1_group2 = Radiobutton(group2, text='黄大豆', variable=v2,
                             value=1, indicatoron=False)
    rb1_group2.pack(fill=X)

    rb2_group2 = Radiobutton(group2, text='赤小豆', variable=v2,
                             value=2, indicatoron=False)
    rb2_group2.pack(fill=X)

    rb3_group2 = Radiobutton(group2, text='刀豆', variable=v2,
                             value=3, indicatoron=False)
    rb3_group2.pack(fill=X)

    mainloop()


if __name__ == '__main__':
    main()


运行结果

labelframe_radiobutton_2.png

参考资料

学习推荐


Python具有开源、跨平台、解释型和交互式等特性,值得学习。
Python的设计哲学:优雅,明确,简单。提倡用一种方法,最好是只有一种方法来做一件事。
GUI可以选择PyQt5、PySide2、wxPython、PyGObject、wxWidgets等进行创作。
代码的书写要遵守规范,这样有助于沟通和理解。
每种语言都有独特的思想,初学者需要转变思维、踏实践行、坚持积累。