tkinter pack 几何:1 列,一行中有 4 个单选按钮? [英] tkinter pack geometry: 1 column with 4 radio buttons in one row?

查看:43
本文介绍了tkinter pack 几何:1 列,一行中有 4 个单选按钮?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望在一列中有四个水平按钮(整个 UI 是一列).我不知道如何使用包几何管理器来做到这一点.我已经使按钮垂直,但必须有办法做到这一点.我是 Python 新手,所以我的代码非常简单:

v = IntVar()Radiobutton(root, text="Red", variable=v, value=1, command = red).grid(row=1)Radiobutton(root, text="Blue", variable=v, value=2, command = blue).grid(row=2)Radiobutton(root, text="Green", variable=v, value=3, command = green).grid(row=3)Radiobutton(root, text="Other", variable=v, value=4, command = Other).grid(row=4)

如果我把它们放在同一行,它们就会叠在一起.我阅读了另一篇关于按钮分组的文章,但那是针对 Android 应用程序的.

解决方案

当按钮垂直堆叠时,它们都在一列中.
假设您的意思是:我希望在一个中有四个水平按钮.",
每个按钮都在该行的单独列中,
我的第一个建议是使用框架来包含按钮.

这是一个使用 grid 及其行的示例column 选项:

import Tkinter as tki # tkinter in Python 3根 = tki.Tk()frm = tki.Frame(根,bd=16,relief='sunken')frm.grid()var = tki.StringVar()温和 = tki.Radiobutton(frm, text='温和', 变量 = var)轻度配置(指标=0,bd=4,宽度=12,值=轻度")轻度网格(行 = 0,列 = 0)medium = tki.Radiobutton(frm, text='Medium', variable=var)medium.config(indicatoron=0, bd=4, width=12, value='Medium')medium.grid(row=0, column=1)hot = tki.Radiobutton(frm, text='Hot', variable=var)hot.config(indicatoron=0, bd=4, width=12, value='Hot')hot.grid(行=0,列=2)root.mainloop()

或者你可以使用 pack,和 side 选项设置为 'left'.
这是一个在循环中创建按钮并绑定到字典中的键的示例:

将 Tkinter 导入为 tkidef print_var(*args):打印 root.getvar(name=args[0])# 或者打印 var.get()根 = tki.Tk()frm = tki.Frame(根,bd=16,relief='sunken')frm.pack()var = tki.StringVar()var.trace('w', print_var)b_dict = {'轻度':0,'中':0,'热':0}对于 b_dict 中的键:b_dict[key] = tki.Radiobutton(frm, text=key, bd=4, width=12)b_dict[key].config(indicatoron=0, variable=var, value=key)b_dict[key].pack(side='left')root.mainloop()

有关变量类及其方法的信息可以在→此处找到.>

I would like to have four horizontal buttons in one column (the entire UI is one column). I can't figure out how to do this with the pack geometry manager. I have resorted to having the buttons vertically, but there must be a way to do this. I am new to Python, so my code is pretty simple:

v = IntVar()

Radiobutton(root, text="Red", variable=v, value=1, command = red).grid(row=1) 
Radiobutton(root, text="Blue", variable=v, value=2, command = blue).grid(row=2)
Radiobutton(root, text="Green", variable=v, value=3, command = green).grid(row=3)
Radiobutton(root, text="Other", variable=v, value=4, command = Other).grid(row=4)

if I put them in the same row, they are stacked on top of each other. I read another post about Grouping the buttons, but that was for an Android app.

解决方案

When buttons are stacked vertically they are all in one column.
Assuming you meant: "I would like to have four horizontal buttons in one row.",
with each button in a separate column of that row,
my first recommendation would be to use a frame to contain the buttons.

Here's an example using grid with its row and column options:

import Tkinter as tki # tkinter in Python 3

root = tki.Tk()

frm = tki.Frame(root, bd=16, relief='sunken')
frm.grid()

var = tki.StringVar()

mild = tki.Radiobutton(frm, text='Mild', variable=var)
mild.config(indicatoron=0, bd=4, width=12, value='Mild')
mild.grid(row=0, column=0)

medium = tki.Radiobutton(frm, text='Medium', variable=var)
medium.config(indicatoron=0, bd=4, width=12, value='Medium')
medium.grid(row=0, column=1)

hot = tki.Radiobutton(frm, text='Hot', variable=var)
hot.config(indicatoron=0, bd=4, width=12, value='Hot')
hot.grid(row=0, column=2)

root.mainloop()

or you could use pack, with the side option set to 'left'.
Here's an example where the buttons are created in a loop, and bound to keys in a dictionary:

import Tkinter as tki

def print_var(*args):
    print root.getvar(name=args[0])
    # or
    print var.get()

root = tki.Tk()

frm = tki.Frame(root, bd=16, relief='sunken')
frm.pack()

var = tki.StringVar()
var.trace('w', print_var)

b_dict = {'Mild':0, 'Medium':0, 'Hot':0}

for key in b_dict:
    b_dict[key] = tki.Radiobutton(frm, text=key, bd=4, width=12)
    b_dict[key].config(indicatoron=0, variable=var, value=key)
    b_dict[key].pack(side='left')

root.mainloop()

Information about the variable classes, and their methods, can be found → here.

这篇关于tkinter pack 几何:1 列,一行中有 4 个单选按钮?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆