2016-10-27 5 views
0

私はtkinterの作業を開始しましたが、そのような問題があります。たとえば、tkinter variable.grid(行= 0)

from tkinter import * 

root = Tk() 

frame = Frame(root) 
frame.pack() 

theLabel = Label(root, text="bla bla") 
theLabel.grid(row=0) 

root.mainloop() 

このコードは機能しませんし、そのようなエラーが表示されます。

File "C:\Users\Kenan\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 2074, in grid_configure 
    + self._options(cnf, kw)) 
_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack 

答えて

3

@ Luke.pyで述べたように、grid()pack()を同じウィジェットに混在させることはできません。 6行目の

  • 、あなたは9行目root
  • 内部Frameを梱包している、あなたはおそらく、あなたがフレームの内側にgrid()Labelに意味Label
root内部

をgridingていますその場合は8行目を

theLabel = Label(frame, text="bla bla") 
に変更してください

それともあなたが本当にまず

frame.grid() 
+0

おかげで、私の間違いはフレームだった。私はそれを使用すべきではありません。私はそれを取り除くときに働いた。誰もありがとう:) –

+0

すべてのプラットフォームでより多くのネイティブなコントロールとウィンドウを表示するためにttkを使い始めるなら、右(システムのデフォルト)の色の背景を得るために 'Toplevel'の中に' ttk.Frame'を置くことが望ましいでしょう – Grezzo

2

この問題は、同じフレーム/ルート内でパックとグリッドの組み合わせを使用する場合に発生します。

9行目のgridpack()に変更してください。

from tkinter import * 

root = Tk() 

frame = Frame(root) 
frame.pack() 

theLabel = Label(frame, text="bla bla") *this should use frame - not root 
theLabel.grid() 

root.mainloop() 

ルーク

+0

に、その場合には、その答えに感謝を変更ライン6を同じレベルでFrameLabelをしたいです。しかし、.packはとにかく動作します。私は.gridを使う必要があります。実際に私はいくつかのエントリを書いており、ラベルの近くにそれらを配置したい。これについて私に助けてくれますか? –

+1

'Label'のルート(' root'から 'frame'へ)を変更しました。しかし、さらに、 'grid'を' pack'に変更しました。これはもはや必要ではありません。 – xZise

+0

@xZise良いスポット!ありがとう、 –

関連する問題