Как правильно разместить тинтер панседворитов на вкладку ноутбука?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно разместить тинтер панседворитов на вкладку ноутбука?

Сообщение Anonymous »

Проблема с размещением створки Panedwindow на вкладке ноутбука. > Однако, когда я пытаюсь расположить стволы вручную, третий ствол не появляется в ожидаемой позиции.
ожидаемое поведение:
Три ствола должны быть размещены в положениях 100, 657 и 1000.
наблюдаемое поведение:
< ul>
Первые два ствола размещены правильно при 100 и 657. /> < /ul>
Вот мой код: < /p>

Код: Выделить всё


import tkinter as tk
from tkinter import ttk

class Main():
def __init__(self) -> None:
self.root = tk.Tk()
self.root.geometry('1100x400')
self.root.protocol("WM_DELETE_WINDOW", self.dismiss)
self.root.columnconfigure(0, weight=1)
self.root.rowconfigure(0, weight=1)

notebook = self._notebook(self.root)
notebook.grid(row=0, column=0, sticky=tk.NSEW)

# Debugging button to retry sash placement
button = tk.Button(self.root, text='...', command=self.click)
button.grid(row=1, column=0)

self.root.mainloop()

def _notebook(self, master: tk.Frame) -> ttk.Notebook:
notebook = ttk.Notebook(master)
self.test_tab = TestFrame(notebook)
notebook.add(self.test_tab.master_frame, text='Test')
return notebook

def dismiss(self, *args) -> None:
print([self.test_tab.master_frame.sash_coord(index) for index in range(3)])
self.root.destroy()

def click(self, *args) -> None:
# Attempt to reposition sashes (1 moves, 2 doesn't)
sashes = [(100, 1), (500, 1), (1000, 1)]
for index, sash in enumerate(sashes):
self.test_tab.master_frame.sash_place(index, sash[0], 0)

class TestFrame():
def __init__(self, master) -> None:
self.master_frame = self._master_frame(master)
self.master_frame.grid(row=0, column=0, sticky=tk.EW)

# Expected sash positions
sashes = [(100, 1), (657, 1), (1000, 1)]
for index, sash in enumerate(sashes):
self.master_frame.sash_place(index, sash[0], 0)

def _master_frame(self, master) -> ttk.PanedWindow:
frame = tk.PanedWindow(master, orient=tk.HORIZONTAL)

for _ in range(4):
listbox = tk.Listbox(frame)
frame.add(listbox)

return frame

if __name__ == '__main__':
Main()

Даже после создания окна при нажатии на кнопку набор не будет расположен правильно.
Системная информация: < Br />

Код: Выделить всё

OS: Manjaro Linux
KDE Plasma Version: 6.2.5
KDE Frameworks Version: 6.10.0
Qt Version: 6.8.2
Python Version: 3.13.1
tk.TkVersion: 8.6
Любое понимание того, почему третий пояс не будет правильно размещен, будет очень признателен!

Подробнее здесь: https://stackoverflow.com/questions/794 ... tebook-tab
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»