【发布时间】:2015-10-09 23:23:06
【问题描述】:
我发现了如何为 Tk 创建一个替换徽标,以及如何从窗口中删除 Tk。然而,我还没有找到任何关于如何粘贴任何按钮等的存在。我尝试创建一个类和一个 def create_widget,但由于某种原因,我在 PyDev 调试中遇到错误。它一直说sticky = N + E是未定义的。我认为导入 ttk 会自动允许我通过 self 编辑这些按钮,但是当我这样做时,我必须更改周围的所有内容,然后导入将不允许 root。我相信这个问题是因为我没有以正确的方式导入,因为我已经替换了徽标并删除了 tk.我的问题是,.pack 是如何工作的,我在这段代码中主要缺少什么?
from tkinter import ttk
import tkinter
import tempfile
ICON = (b'\x00\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x08\x00h\x05\x00\x00'
b'\x16\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00'
b'\x08\x00\x00\x00\x00\x00@\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x01\x00\x00\x00\x01') + b'\x00'*1282 + b'\xff'*64
_, ICON_PATH = tempfile.mkstemp()
with open(ICON_PATH, 'wb') as icon_file:
icon_file.write(ICON)
root = tkinter.Tk()
buttonstyle = ttk.Style()
buttonstyle.map("C.TButton",
foreground=[('pressed', 'red'), ('active', 'blue')],
background=[('pressed', '!disabled', 'black'), ('active', 'white')]
)
colored_btn = ttk.Button(text="Activate", style="C.TButton").pack()
b = ttk.Button(root, text='Rename')
b.pack()
style = ttk.Style()
style.theme_settings("default", {
"TCombobox": {
"configure": {"padding": 5},
"map": {
"background": [("active", "green2"),
("!disabled", "green4")],
"fieldbackground": [("!disabled", "green3")],
"foreground": [("focus", "OliveDrab1"),
("!disabled", "OliveDrab2")]
}
}
})
combo = ttk.Combobox().pack()
style.layout("TMenubutton", [
("Menubutton.background", None),
("Menubutton.button", {"children":
[("Menubutton.focus", {"children":
[("Menubutton.padding", {"children":
[("Menubutton.label", {"side": "left", "expand": 1})]
})]
})]
}),
])
mbtn = ttk.Menubutton(text='Rename')
mbtn.pack()
root.title("Rename")
root.iconbitmap(default = ICON_PATH)
root.geometry("700x300")
label = ttk.Label(root, text = "Rename")
label.pack()
root.mainloop()
【问题讨论】:
-
我查看过 Google、Python Doc 3.5 和 youtube。但是每个支持都没有说明如何在 .pack 上使用 .grid(row = ... )
-
“pack 是如何工作的”对于 stackoverflow 来说过于宽泛,而“如何在 .pack 上使用 .grid...”毫无意义。网格和打包是完成相同任务的两种不同方式。这就像烧烤对油炸,或者开车对开公共汽车。你不能“在油炸食品上烧烤”或“在公共汽车上开车”。您可能想先阅读effbot.org/zone/tkinter-geometry.htm
标签: python import tkinter sticky ttk