Я попытался создать вертикальный прокрученный кадр для размещения некоторых виджетов.Как заставить полосу прокрутки придерживаться справа
Однако, когда я упаковываю в него объекты, размер рамки соответствует максимальной ширине какого-то виджета внутри него.
Как я могу заставить его придерживаться направо?
Я использовал следующий код:
RadioList.py
class RadioList(Frame):
def __init__(self, parent, *args, **kwargs):
Frame.__init__(self, parent)
self.pack()
self._frame = Frame(self, *args, **kwargs)
self._frame.pack(fill=BOTH, expand=YES)
self._var = IntVar()
# self._var = StringVar('a')
def add(self, text, value):
rb = Radiobutton(self._frame,
text=text,
value=value,
variable=self._var,
anchor=W,
# width=200
)
# rb.grid()
rb.pack(fill=X)
main.py:
class App(Frame):
def __init__(self, parent=None):
Frame.__init__(self, parent)
# self.geometry('400x300')
self.grid()
self.label = Label(self, text="hello world")
self.label.grid()
container = Frame(self)
container.grid(row=1, columnspan=3)
vframe = VerticalScrolledFrame(container)
# vframe.pack(fill=BOTH);
# vframe.pack()
# vframe.pack(side=LEFT, anchor=W)
vframe.grid()
rbl = RadioList(vframe.interior, bg="white")
for x in range(100, 150):
i = x + 1
t = n2w(i)
rbl.add(t, i)
rbl.grid(columnspan=3)
Код полосы прокрутки взято отсюда: https://stackoverflow.com/a/16198198/145682
Полный код доступен здесь: https://github.com/deostroll/pytk
Вам нужно вызвать фрейм '.pack_propagate (0)', чтобы остановить его изменение размера, чтобы оно соответствовало содержащимся в нем виджетам. –
Вы спрашиваете, как заставить полосу прокрутки придерживаться вправо, или вы спрашиваете, как предотвратить сокращение окна до его содержимого? –
@BryanOakley это не «контейнер», который сокращается? – deostroll