«Неизвестная опция», «Плохая команда» при настройке ttk.Panedwindow и панелей - PullRequest
0 голосов
/ 07 декабря 2018

Я экспериментирую с ttk.Panedwindow, но получаю ошибки с предположительно допустимыми параметрами.Несколько опций работают (например, weight), но большинство не работает.Пожалуйста, помогите мне понять, что происходит!Я использую python 3.6.3, tk 8.6 и ttk 0.3.1

Рабочий фрагмент

import tkinter as tk
from tkinter import ttk

# setup the panedwindow
root = tk.Tk()
paned_w = ttk.Panedwindow(root, orient=tk.HORIZONTAL, width=300, height=300)
paned_w.pack(fill='both', expand=True)

# setup the panels
left_p = ttk.Label(paned_w, background='red')
right_p = ttk.Label(paned_w, background='yellow')
paned_w.add(left_p, weight=1)
paned_w.add(right_p, weight=3)

root.mainloop()

Panedwindow "неизвестная опция"

Если я пытаюсь изменитьsashwidth Panedwindow:

paned_w = ttk.Panedwindow(root, orient=tk.HORIZONTAL, width=300, height=300, sashwidth=20)

Я получаю ошибку «неизвестная опция»:

Traceback (most recent call last):
  File "panedwindow.py", line 6, in <module>
paned_w = ttk.Panedwindow(root, orient=tk.HORIZONTAL, width=300, height=300, sashwidth=20)
  File "C:\Users\david\Anaconda3\lib\tkinter\ttk.py", line 956, in __init__
Widget.__init__(self, master, "ttk::panedwindow", kw)
  File "C:\Users\david\Anaconda3\lib\tkinter\ttk.py", line 559, in __init__
tkinter.Widget.__init__(self, master, widgetname, kw=kw)
  File "C:\Users\david\Anaconda3\lib\tkinter\__init__.py", line 2293, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: unknown option "-sashwidth"

Дочерняя панель «неизвестная опция»

Та же ошибка возникает, еслиЯ пытаюсь настроить дочерние панели в методе add ():

paned_w.add(left_p, weight=1, minsize=10)

Выход:

Traceback (most recent call last):
  File "panedwindow.py", line 12, in <module>
    paned_w.add(left_p, weight=1, minsize=10)
  File "C:\Users\david\Anaconda3\lib\tkinter\__init__.py", line 3817, in add
    self.tk.call((self._w, 'add', child) + self._options(kw))
_tkinter.TclError: unknown option "-minsize"

Дочерняя панель "плохая команда"

Поскольку она неработать в методе add (), я пытался настроить его отдельно:

paned_w.paneconfig(left_p, minsize=10)

Это дает мне ошибку "плохая команда", несмотря на распознавание intellisense:

Traceback (most recent call last):
  File "panedwindow.py", line 15, in <module>
    paned_w.paneconfig(left_p, minsize=10)
  File "C:\Users\david\Anaconda3\lib\tkinter\__init__.py", line 3972, in paneconfigure
    self._options(cnf, kw))
_tkinter.TclError: bad command "paneconfigure": must be add, configure, cget, forget, identify, insert, instate, pane, panes, sashpos, or state

То же самоеошибка возникает, даже если я запускаю ее без каких-либо параметров.

Печать вывода paned_w.paneconfig () (без указания панели) дает мне TypeError, как я и ожидал, так ясно, что команда доступна:

TypeError: paneconfigure() missing 1 required positional argument: 'tagOrId'

1 Ответ

0 голосов
/ 08 декабря 2018

Ошибка говорит вам точно, что не так: вы используете виджет ttk PanedWindow, и этот виджет не поддерживает ни опцию sashwidth, ни опцию minsize для метода paneconfigure.Оба они поддерживаются только виджетом tkinter PanedWindow.

Другими словами, вы, кажется, полагаетесь на документацию для виджета tkinter PanedWindow, но на самом деле используете виджет ttk PanedWindow.Эти два виджета выглядят одинаково, но способ их настройки совершенно другой.

...