Tkinterを使用してEmailプログラムを作成しています。Python 3.3。さまざまなサイトで、FrameウィジェットはFrame.config(background="color")
。ただし、フレームでこれを使用すると、次のエラーが発生します。
_tkinter.TclError: unknown option "-Background"
次の操作を行うと機能しません。
frame = Frame(root, background="white")
または:
frame = Frame(root)
frame.config(bg="white")
わかりません。私はソースコード全体を投稿しますが、インターネット上で公開したくありませんが、フレームの作成は次のようになります。
mail1 = Frame(self, relief=SUNKEN)
mail1.pack()
mail1.place(height=70, width=400, x=803, y=109)
mail1.config(Background="white")
背景を変更しようとして複数のオプションを試しました。フレームは、受信トレイの電子メールプレビューを囲むようなものです。
必要な場合、これは私のモジュールをインポートする方法です:
import tkinter, time, base64, imaplib, smtplib
from imaplib import *
from tkinter import *
from tkinter.ttk import *
完全なトレースバックは次のとおりです。
Traceback (most recent call last):
File "C:\Users\Wessel\Dropbox\Python\Main\Class Ginomail.py", line 457, in <module>
main()
File "C:\Users\Wessel\Dropbox\Python\Main\Class Ginomail.py", line 453, in main
app = Application(root) #start the application with root as the parent
File "C:\Users\Wessel\Dropbox\Python\Main\Class Ginomail.py", line 60, in __init__
self.initINBOX()
File "C:\Users\Wessel\Dropbox\Python\Main\Class Ginomail.py", line 317, in initINBOX
mail1.config(bg="white")
File "C:\Python33\lib\tkinter\__init__.py", line 1263, in configure
return self._configure('configure', cnf, kw)
File "C:\Python33\lib\tkinter\__init__.py", line 1254, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: unknown option "-bg"
回答からのコードで次のエラーを示します。
File "C:\Users\Wessel\Dropbox\Python\Main\Class Ginomail.py", line 317, in initINBOX
mail1 = Frame(self, relief=SUNKEN, style='myframe')
File "C:\Python33\lib\tkinter\ttk.py", line 733, in __init__
Widget.__init__(self, master, "ttk::frame", kw)
File "C:\Python33\lib\tkinter\ttk.py", line 553, in __init__
tkinter.Widget.__init__(self, master, widgetname, kw=kw)
File "C:\Python33\lib\tkinter\__init__.py", line 2075, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: Layout myframe not found
解決しました!ありがとう。その右側の受信トレイバーは、背景が白である必要がありました。
問題の根本は、Frame
パッケージからではなく、ttk
パッケージからtkinter
クラスを無意識に使用していることです。 ttk
からのものは、バックグラウンドオプションをサポートしていません。
これがグローバルインポートを行うべきではない主な理由です。クラスとコマンドの定義を上書きできます。
このようなインポートを行うことをお勧めします。
import tkinter as tk
import ttk
次に、ウィジェットに接頭辞tk
またはttk
のいずれかを付けます。
f1 = tk.Frame(..., bg=..., fg=...)
f2 = ttk.Frame(..., style=...)
それから、ほんの少し入力するだけで、使用しているウィジェットがすぐにわかります。これを行っていた場合、コード内のこのエラーは発生しなかったでしょう。
あなたが使う ttk.Frame
、bg
オプションは機能しません。 スタイルを作成してフレームに適用する必要があります。
from tkinter import *
from tkinter.ttk import *
root = Tk()
s = Style()
s.configure('My.TFrame', background='red')
mail1 = Frame(root, style='My.TFrame')
mail1.place(height=70, width=400, x=83, y=109)
mail1.config()
root.mainloop()