Обновлен:
Самое быстрое решение, которое я могу придумать, - это указать вес для каждого столбца, а затем поместить туда свои кнопки. У места есть свои моменты, но по большей части вы можете решить проблемы размещения с помощью pack()
или grid()
.
Здесь мы будем использовать сетку и генерировать номера столбцов с диапазоном.
Попробуйте следующее:
from tkinter import *
class MyApproach():
def __init__(self):
# updated the data here so it would be easier to run a loop over it.
self.radiobutton_name_list = {0: ["radio1", "This_is_text"],
1: ["radio2", "This_is_mid_text"],
2: ["radio3", "This_is_loooooooong_text"]}
self.create_root()
self.create_label_frame()
self.create_radiobuttons()
self.mainloop()
def create_root(self):
self.root = Tk()
self.root.geometry("740x120")
self.root.title("test")
self.root.resizable(False, False)
def create_label_frame(self):
self.new_labelframe = LabelFrame(self.root, text='My Frame', relief=GROOVE, bd=2)
self.new_labelframe.place(width=720, height=80, x=10, y=10)
def create_radiobuttons(self):
# using len and range to get the key of the radio button list.
# this same key number can be used as the column as well.
for i in range(len(self.radiobutton_name_list)):
self.new_labelframe.columnconfigure(i, weight=1)
Radiobutton(self.new_labelframe, text=self.radiobutton_name_list[i][1]).grid(row=0, column=i, sticky="nsew")
def mainloop(self):
self.root.mainloop()
app = MyApproach()