关于python:设置Tkinter / ttk框架背景颜色

Setting Tkinter/ttk Frame background color

我正在尝试改变一个TTK框架的背景色,我已经查找了其他的例子,但似乎没有一个奏效。这是迄今为止我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from Tkinter import *
import ttk

p = Tk()

p.geometry('600x350')
p.configure(bg='#334353')

gui_style = ttk.Style()
gui_style.configure('My.TButton', foreground='#334353')
gui_style.configure('My.TFrame', background='#334353')

frame = ttk.Frame(p, style='My.TFrame')
frame.grid(column=1, row=1)

ttk.Button(frame, text='test', style='My.TButton').grid(column=0, row=0)
ttk.Button(frame, text='Test 2', style='My.TButton').grid(column=3, row=3)

p.mainloop()

窗口有我想要的背景色,但是框架仍然有默认的灰色背景。有什么需要我补充的吗?我想要整个窗口,除了按钮的颜色334353。我该怎么做?

编辑:我附加了窗口的外观。我不想要灰色的。:/(注显然,我没有足够的代表来发布图片,所以这里有一个链接,我的当前窗口是imgur:http://imgur.com/kyhbdmb


您的框架大小仅为容纳两个子窗口(按钮)所需的最小大小。你好像想让框架填满主窗口。对框架进行网格划分时,应添加粘性选项,使其展开以填充可用空间(例如:frame.grid(column=1,row=1,sticky='news'))。然后您需要让父级将所有空间分配给这个网格单元。为此,您需要使用父窗口的网格列配置和网格列配置方法。在这种情况下:

1
2
p.grid_columnconfigure(1, weight=1)
p.grid_rowconfigure(1, weight=1)

它告诉主框架网格几何图形管理器应该给单元格和第1行第1列留出空间。这将导致您的框架展开以填充窗口。


它在我的电脑上工作!

试试这个:

  • 更新您的python环境(在py 3.4 windows 32位下测试)
  • 安装最新的TTK包