"Unknown option"、"Bad command" 关于配置 ttk.Panedwindow 和窗格
"Unknown option", "Bad command" on configuring ttk.Panedwindow and panes
我正在试验 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 "unknown option"
如果我尝试更改 Panedwindow 的窗扇宽度:
paned_w = ttk.Panedwindow(root, orient=tk.HORIZONTAL, width=300, height=300, sashwidth=20)
我收到 "unknown option" 错误:
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"
子面板 "unknown option"
如果我尝试在 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"
子面板 "bad command"
由于在add()方法中不起作用,我尝试单独配置:
paned_w.paneconfig(left_p, minsize=10)
这给了我一个 "bad command" 错误,尽管 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'
错误告诉你到底出了什么问题:你正在使用 ttk PanedWindow
小部件,并且该小部件不支持 sashwidth
选项,也不支持 minsize
选项paneconfigure
方法。这些都仅由 tkinter PanedWindow
小部件支持。
换句话说,您似乎依赖于 tkinter PanedWindow
小部件的文档,但实际上使用的是 ttk PanedWindow
小部件。这两个小部件具有相似的外观和感觉,但配置它们的方式却大不相同。
我正在试验 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 "unknown option"
如果我尝试更改 Panedwindow 的窗扇宽度:
paned_w = ttk.Panedwindow(root, orient=tk.HORIZONTAL, width=300, height=300, sashwidth=20)
我收到 "unknown option" 错误:
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"
子面板 "unknown option"
如果我尝试在 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"
子面板 "bad command"
由于在add()方法中不起作用,我尝试单独配置:
paned_w.paneconfig(left_p, minsize=10)
这给了我一个 "bad command" 错误,尽管 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'
错误告诉你到底出了什么问题:你正在使用 ttk PanedWindow
小部件,并且该小部件不支持 sashwidth
选项,也不支持 minsize
选项paneconfigure
方法。这些都仅由 tkinter PanedWindow
小部件支持。
换句话说,您似乎依赖于 tkinter PanedWindow
小部件的文档,但实际上使用的是 ttk PanedWindow
小部件。这两个小部件具有相似的外观和感觉,但配置它们的方式却大不相同。