フレーム内にあるフレームにウィジェットを配置するときのエラー。Tkinter - Python3

ナシーム・トムキンソン

したがって、以下のコードは私の実際のコードの短縮バージョンです。フレーム内に配置されたフレーム内にウィジェットを表示するときに問題が発生します。

したがって、基本的に以下のコードはログイン メニューであり、ボタンをクリックするとフレームが別のフレームに変わります。この場合login_frameoverview_frame. overview_framei の中にと呼ばれる別のフレームがありtitleFrame、このフレームは に配置されますoverview_frame

titleFrameこの場合、配置方法を使用titleLabelしてウィジェットをこのインスタンス.grid()に配置したいときに問題が発生します

私が作成した他の tkinter アプリケーションでこれを実行しましたが、これを数時間実行しようとしましたが、結論には至りませんでした。これは私が得続けるエラーです:


Traceback (most recent call last):
  File "C:\Users\nasto\Documents\Company\rfr.py", line 67, in <module>
    app = frame_store()
  File "C:\Users\nasto\Documents\Company\rfr.py", line 16, in __init__
    frame = n_frame(parent=container, controller=self)
  File "C:\Users\nasto\Documents\Company\rfr.py", line 57, in __init__
    titleLabel = tk.Label(titleFrame, text='TITLE').grid(row=0,column=0, sticky='nsew', padx=2, pady=2)
  File "C:\Users\nasto\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 2220, in grid_configure
    + self._options(cnf, kw))
_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack

このコードと私が作成した他のアプリケーションとの唯一の違いはframe_storeクラスです。使用された 1 行のコードがありますが、.Pack()これを削除するlogin_frametitleFrame表示されず、ウィジェットは直接overview_frame. .Pack()すべてのフレームがまだ表示されいることを確認しながら、または使用中に を配置するtitleLabelには、どうすればよいでしょうか。個人的には、e // に接続されているものと関係があると思いますが、それをいじりながら機能する結果が得られていません。titleFrame.grid()titleFrameself

import tkinter as tk
import hashlib
import sqlite3

class frame_store(tk.Tk):
  def __init__(self, *args, **kwargs):
    tk.Tk.__init__(self, *args, **kwargs)
    '''container is used so that all the frames can be stacked, from there we can call other frames within the container to the top, to the current active frame'''
    container = tk.Frame(self)
    container.pack(side='top', fill='both', expand=True)
    container.grid_rowconfigure(0, weight=1)
    container.grid_columnconfigure(0, weight=1)
    self.frames = {}
    for n_frame in (login_frame, overview_frame, accounting_frame):
      pageName = n_frame.__name__
      frame = n_frame(parent=container, controller=self)
      self.frames[pageName] = frame
      frame.grid(row=0, column=0, sticky='nsew')
    self.show_frames('login_frame')

  def show_frames(self, pageName):
    frame = self.frames[pageName]
    self.update_idletasks()
    self.state('zoomed')
    self.title('A2 Project')
    frame.tkraise()

class login_frame (tk.Frame):
  def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)
    self.controller = controller
    loginButton = tk.Button(self, text='Login', command = self.no_credentials).grid(row=3,column=0)
    self.controller.bind('<Control-n>', lambda event: self.no_credentials())

  def no_credentials(self):
    self.controller.show_frames('overview_frame')

  def clear(self):
    self.__userID.set('')
    self.__password.set('')

  def exit(self):
    app.destroy()   


class overview_frame(tk.Frame):
  def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)
    self.controller = controller

    self.config(background='#000000')  
    self.rowconfigure(0, weight=1)
    self.columnconfigure(0, weight=1)

    titleFrame = tk.Frame(self, background='#f8f8ff', bd=1, relief='sunken').grid(row=0, column=0, sticky='nsew', padx=2, pady=2)

    titleLabel = tk.Label(titleFrame, text='TITLE').grid(row=0,column=0, sticky='nsew', padx=2, pady=2)


class accounting_frame(tk.Frame):
  def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)
    self.controller = controller
  pass

if __name__ == "__main__":
    app = frame_store()
    app.mainloop()
ジョセリン

あなたの問題が原因にある作成あなたのフレームをと整合させる単一のコード行でそれを。

書くとき:

titleFrame = tk.Frame(self, relief='sunken').grid(row=0, column=0)

titleFrame作成したばかり.grid()ではなくメソッドの出力tk.Frameです。したがって、将来のウィジェットの親として使用することはできません。

ウィジェットへの参照を保持するには、ウィジェットの作成とウィジェットの配置を分離する必要があります。

titleFrame = tk.Frame(self, background='#f8f8ff', bd=1, relief='sunken')
titleFrame.grid(row=0, column=0, sticky='nsew', padx=2, pady=2)
titleLabel = tk.Label(titleFrame, text='TITLE')
titleLabel.grid(row=0,column=0, sticky='nsew', padx=2, pady=2)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

別のウィジェットpython 3 tkinterでプレイスを使用すると、ウィジェットがフレームとして認識される

分類Dev

Python-複数のフレームを使用する場合のウィジェットの配置

分類Dev

Python3でtkinterを使用するサブフレーム

分類Dev

ウィジェットpythonがある場合でもフレームのサイズを変更する

分類Dev

Python3 / tkinterで、親ウィンドウサイズに対するフレームのサイズを設定する方法は?

分類Dev

データフレームをcsvファイルに保存するPython3

分類Dev

python tkinterを使用してフレームをレイアウトする際の問題(フレーム内のフレームにより親フレームが非表示になります)

分類Dev

python tkinterでクラスを作成しています(オブジェクトは内部にあるものを含むフレームです)

分類Dev

tkinterを使用してPythonの色付きフレームにテキストエントリを配置するにはどうすればよいですか?

分類Dev

Python3でデータフレームをdictに変換する方法

分類Dev

Python3:ASCIIエンコードとbプレフィックスなしで、python2のようにtelnetlibを使用する方法はありますか?

分類Dev

高山にpython3パッケージをインストールするときのエラー

分類Dev

python3 lxmlプレフィックスが空のときにノードを見つける方法は?

分類Dev

Pythonでデータフレームをフィルタリングするときにオブジェクトではなく文字列を取得する方法

分類Dev

python3データフレームの列の頻度をカウントする方法

分類Dev

MicrosoftボットフレームワークSDK3C#を使用してMicrosoftチームにウェルカムメッセージを表示する方法

分類Dev

Pythonでフレームウィジェットの幅を変更するにはどうすればよいですか?

分類Dev

python3でパンダのデータフレームを.matファイルに保存する

分類Dev

githubからフレームまたはパッケージとしてダウンロードしたPythonプロジェクトを作成するには?

分類Dev

Python:データフレームにカウンターオブジェクトを追加するには?

分類Dev

python3を使用してデータフレーム内の特定のテキスト列を「utf-8」に変換する方法

分類Dev

Python3:空のパンダデータフレームに複数列の行を追加する

分類Dev

tkinterウィンドウ内に3Dフィギュアをプロットすると、フィギュアを回転したりズームしたりできないのはなぜですか

分類Dev

Unity3D-プラットフォームが回転しているときにプラットフォームコライダーを介してフェージングするリジッドボディ

分類Dev

Python tkinter:フレーム内のラベルを継続的に更新

分類Dev

matplotlibを使用したPython3でのコンウェイのライフゲーム-フォーメーションの表示に関する問題

分類Dev

オブジェクトをPython2とPython3の両方のイテレータにする方法は?

分類Dev

python3プログラム内に写真を配置する方法

分類Dev

Python3:オブジェクトごとに疑似ランダムシーケンスを生成する方法は?

Related 関連記事

  1. 1

    別のウィジェットpython 3 tkinterでプレイスを使用すると、ウィジェットがフレームとして認識される

  2. 2

    Python-複数のフレームを使用する場合のウィジェットの配置

  3. 3

    Python3でtkinterを使用するサブフレーム

  4. 4

    ウィジェットpythonがある場合でもフレームのサイズを変更する

  5. 5

    Python3 / tkinterで、親ウィンドウサイズに対するフレームのサイズを設定する方法は?

  6. 6

    データフレームをcsvファイルに保存するPython3

  7. 7

    python tkinterを使用してフレームをレイアウトする際の問題(フレーム内のフレームにより親フレームが非表示になります)

  8. 8

    python tkinterでクラスを作成しています(オブジェクトは内部にあるものを含むフレームです)

  9. 9

    tkinterを使用してPythonの色付きフレームにテキストエントリを配置するにはどうすればよいですか?

  10. 10

    Python3でデータフレームをdictに変換する方法

  11. 11

    Python3:ASCIIエンコードとbプレフィックスなしで、python2のようにtelnetlibを使用する方法はありますか?

  12. 12

    高山にpython3パッケージをインストールするときのエラー

  13. 13

    python3 lxmlプレフィックスが空のときにノードを見つける方法は?

  14. 14

    Pythonでデータフレームをフィルタリングするときにオブジェクトではなく文字列を取得する方法

  15. 15

    python3データフレームの列の頻度をカウントする方法

  16. 16

    MicrosoftボットフレームワークSDK3C#を使用してMicrosoftチームにウェルカムメッセージを表示する方法

  17. 17

    Pythonでフレームウィジェットの幅を変更するにはどうすればよいですか?

  18. 18

    python3でパンダのデータフレームを.matファイルに保存する

  19. 19

    githubからフレームまたはパッケージとしてダウンロードしたPythonプロジェクトを作成するには?

  20. 20

    Python:データフレームにカウンターオブジェクトを追加するには?

  21. 21

    python3を使用してデータフレーム内の特定のテキスト列を「utf-8」に変換する方法

  22. 22

    Python3:空のパンダデータフレームに複数列の行を追加する

  23. 23

    tkinterウィンドウ内に3Dフィギュアをプロットすると、フィギュアを回転したりズームしたりできないのはなぜですか

  24. 24

    Unity3D-プラットフォームが回転しているときにプラットフォームコライダーを介してフェージングするリジッドボディ

  25. 25

    Python tkinter:フレーム内のラベルを継続的に更新

  26. 26

    matplotlibを使用したPython3でのコンウェイのライフゲーム-フォーメーションの表示に関する問題

  27. 27

    オブジェクトをPython2とPython3の両方のイテレータにする方法は?

  28. 28

    python3プログラム内に写真を配置する方法

  29. 29

    Python3:オブジェクトごとに疑似ランダムシーケンスを生成する方法は?

ホットタグ

アーカイブ