"Unknown option" ,"Bad command"配置TTK。窗格和窗格



我正在试验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()

窗格显示"未知选项">

如果我试图更改窗格窗口的边框宽度:

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:UsersdavidAnaconda3libtkinterttk.py", line 956, in __init__
Widget.__init__(self, master, "ttk::panedwindow", kw)
File "C:UsersdavidAnaconda3libtkinterttk.py", line 559, in __init__
tkinter.Widget.__init__(self, master, widgetname, kw=kw)
File "C:UsersdavidAnaconda3libtkinter__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:UsersdavidAnaconda3libtkinter__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)

这给了我一个"糟糕的命令"错误,尽管intelligense识别它:

Traceback (most recent call last):
File "panedwindow.py", line 15, in <module>
paned_w.paneconfig(left_p, minsize=10)
File "C:UsersdavidAnaconda3libtkinter__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'

错误会告诉您到底出了什么问题:您正在使用ttkPanedWindow小部件,而该小部件不支持sashwidth选项,也不支持用于paneconfigure方法的minsize选项。这两者都仅由tkinterPanedWindow小部件支持。

换句话说,您似乎依赖于tkinterPanedWindow小部件的文档,但实际上使用的是ttkPanedWindow小部件。这两个小部件的外观和感觉相似,但配置它们的方式却截然不同。

最新更新