2014-05-15 37 views
2

我想改变一个ttk框架的背景颜色,我查了其他的例子,但没有一个似乎工作。这是我到目前为止的代码:设置Tkinter/ttk框架的背景颜色

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

+0

你的例子很适合我... – NorthCat

+0

有很多关于这方面的问题。请先尝试使用[google搜索](https://www.google.com/search?q=python+tkinter+mac+os+background#q=python+tkinter+mac+os+x+background)。 – Lafexlos

+0

你的操作系统是什么?如果您使用的是mac系统,则会出现前景/背景颜色的问题。不知道它是否仍然存在,但尝试搜索特定于mac的答案。 – Lafexlos

回答

2

你的框架仅尺寸最小尺寸需要保持两个子窗口(按钮)。你似乎希望框架填充主窗口。当您对网格进行网格化时,您应该添加粘性选项以使其展开以填充可用空间(例如:frame.grid(column=1,row=1,sticky='news'))。然后,您需要让父级将所有空间分配给此网格单元格。为此,您要为父窗口使用grid_rowconfigure和grid_columnconfigure方法。在这种情况下:

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

告诉主框架网格几何管理器的备用空间应给予细胞和第1个1列。这将导致你的框架扩大,以填补窗口。

+0

这更接近我想要的东西,但现在当窗口缩放时它看起来像这样:http://imgur.com/0HnDg9I。我将如何减少测试2按钮的填充? –

0

它工作在我的电脑上

试试这个:

  • 更新您的Python环境(PY 3.4的Windows 32位下测试)
  • 安装最新的TTK包
+0

我使用Py 2.7,我的所有较大的应用程序都使用2.7编码。你知道2.7有没有解决这个问题? –

+0

我不知道。可能有些参数或命令没有在2.7版本中定义。 – miny1997