[Tkinter-discuss] LabelFrame question: why do options change when importing from tkFileDialog?
Lynn Oliver
raycores at gmail.com
Tue Feb 28 21:52:47 CET 2012
While I was chasing this down Bryan provided the correct answer. Thanks, Bryan. I believe I will follow your advice.
On Feb 28, 2012, at 12:47 PM, Bryan Oakley wrote:
> On Tue, Feb 28, 2012 at 1:22 PM, Lynn Oliver <raycores at gmail.com> wrote:
>> I've discovered that 'bd=4' and 'font=...' both work if I import:
>> from tkFileDialog import askopenfilename, asksaveasfilename, askdirectory
>> from Tkinter import *
>> import tkFont
>> from ttk import *
>>
>> And they both fail if I import only:
>> from Tkinter import *
>> import tkFont
>> from ttk import *
>>
>> Can anyone explain what is going on here?
>
> Both Tkinter and ttk define objects with the same name, such as Button
> and Label. These two widgets don't share the same set of options. When
> you do "import *", whichever one you import second "wins". Thus, in
> one file you might be getting a tk button with one set of options, and
> in another you get a ttk button with a different set, even though in
> both files you use "Button".
>
> IMHO this is a perfect example why you should _never_ "import *".
> Instead, I wholeheartedly recommend always working like this:
>
> import Tkinter as tk
> import ttk
> ...
> tk.Button(...)
> ttk.Button(...)
>
> With that, it becomes completely obvious which sort of button or label
> you are creating. Even if you don't mix tk and ttk widgets I think you
> should import this way. It makes the code more self-documenting at the
> expense of a tiny bit more typing.
More information about the Tkinter-discuss
mailing list