tkinterウィンドウがグロブ可能に作成された場合にのみ機能するのはなぜですか?

k.apps1999

このモジュールを作成したとき、最初にtkinterウィンドウ(すべての設定をグローバルに)を作成しましたが、意図したとおりに機能しました。モジュールを実行するとウィンドウが機能し、入力フィールドから入力を取得して、ウェルカムメッセージまたはエラーメッセージを表示しました。しかし、それらを関数に入れると、図のように正しく機能しなくなりました。ボタンと入力が機能している状態で、グローバルに作成されたときのウィンドウの外観:

https://gyazo.com/ffcb16416b8a971c09bfa60ee9367bbd

関数内で作成されたときの外観:

https://gyazo.com/c8858a2793befafa41e71d1099f021d3

エラーメッセージがすぐにポップアップし、メインウィンドウに入力フィールドが表示されますがボタンは表示されません。

関数内にウィンドウと設定を作成したコードは次のとおりです。

def userSign(userEntry):
    userId = userEntry.get()
    if userId.isdigit() == True and len(userId) == 4:
        welcomeWindow = tkinter.Tk()
        welcomeWindow.title("Welcome")
        welcomeWindow.geometry("200x50")
        welcome = tkinter.Label(master=welcomeWindow, text="Welcome "+userId,font=("Helvetica", 18, "bold"))
        welcome.grid()
        welcomeWindow.mainloop()
    else:
        errorWindow = tkinter.Tk()
        errorWindow.title("ERROR")
        errorWindow.geometry("500x50")
        error = tkinter.Label(master=errorWindow, text="ERROR: "+userId +" DOES NOT MEET CRITERIA", font=("Helvetica", 18, "bold"))
        error.grid()
        userId=""
        errorWindow.mainloop()      

def show():
    window = tkinter.Tk()
    window.title("Sign In")
    window.geometry("250x100")

    signInPrompt = tkinter.Label(master = window, text = "Enter your ID to sign in")
    signInPrompt.grid(column=0,row=2)

    userEntry = tkinter.Entry(master = window)
    userEntry.grid(column=0,row=4)

    enterButton = tkinter.Button(master = window, text="Sign in", command=userSign(userEntry))
    enterButton.grid(column=0,row=6)

    window.mainloop()

このモジュールは別のメインモジュールから呼び出す必要があるため、関数内で作成したときにウィンドウが正しく機能するようにするにはどうすればよいですか。

figbeam

あなたは2つのインスタンスを作成していますが、Tk()そのインスタンスは悪い考えです。代わりにToplevel()、追加のウィンドウに使用してください。

関数内で変数またはウィジェットを作成する場合、名前はローカルスコープ内にあり、関数外では使用できません。そして、関数が終了すると、それらはゴミ収集されます。

また、@ fhdrsdgが指摘しているように、ボタンコマンドの問題。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

ウィンドウの場所が変更されたときにreactルータースイッチが機能しないのはなぜですか?

分類Dev

NdisFSendNetBufferListsがFilterSendNetBufferListsから呼び出された場合にのみ機能するのはなぜですか?

分類Dev

ウィンドウのサイズ変更中にtkinter.Tk.update()がブロックされるのはなぜですか?

分類Dev

ハンドラーが最初に追加された場合にのみPythonログがstdoutを非表示にするのはなぜですか?

分類Dev

Tkinterウィンドウでラベルが作成される前にtime関数とprint()が実行されるのはなぜですか

分類Dev

Spy ++が実行されている場合にのみQtアプリケーションがウィンドウハンドルを作成するのはなぜですか?

分類Dev

qtでQCustomPlotを使用すると、ウィンドウのサイズが変更された場合にのみグラフが描画されます。なぜですか?

分類Dev

子プロセスのスポーンがウィンドウで機能するのにubuntuでは機能しないのはなぜですか?

分類Dev

与えられたドロップダウンメニューから選択されたすべての可能な組み合わせについて、ウェブサイトから結果を「スクレイプ」するPythonプログラムを作成するにはどうすればよいですか?

分類Dev

JSFフォームでいくつかの基準が満たされない場合にダイアログウィンドウを表示する

分類Dev

メディアクエリがCSSの最後に配置された場合にのみ機能するのはなぜですか?

分類Dev

ファイル名に「.xml」サフィックスがない場合、Chromeがブラウザに表示するのではなく、ローカルホスト上のgatsbyから提供されたxmlファイルをダウンロード/保存しようとするのはなぜですか?

分類Dev

プロパティが変更された場合、Flutterウィジェットの再レンダリングはどのように機能しますか?

分類Dev

このSQLSELECTが値が指定されている場合にのみ機能するのはなぜですか?

分類Dev

このforループが、ゼロ番目のインデックスで繰り返される場合にのみ機能するのはなぜですか?

分類Dev

このPythonサブプロセスコマンドがWindowsでshell = Trueの場合にのみ機能するのはなぜですか?

分類Dev

マウントポイントとして機能するディレクトリへのコピー操作で、マウントされたドライブにデータがコピーされないのはなぜですか?

分類Dev

許可されたユーザー(私が決定)のみを許可し、「アカウントの登録」機能を含まないiOSアプリのログイン機能を作成するにはどうすればよいですか?

分類Dev

Androidの線形レイアウト列にプログラムで設定された重みが正しく機能しないのはなぜですか?

分類Dev

最大化された後にブラウザウィンドウが復元されたときに、高さ修正コードが正しく機能しないのはなぜですか?

分類Dev

Python tkinter:ボタンがクリックされるたびに新しいウィンドウではなく、クリック時に1つの子ウィンドウのみが作成されるようにするにはどうすればよいですか?

分類Dev

Electron ApplicationMenuは、複数のウィンドウがある場合に最後のウィンドウでのみ機能します

分類Dev

Python Tkinter では、キーバインドを正常に作成しましたが、tkinter ウィンドウをクリックした場合にのみ機能します。

分類Dev

Javascriptで作成されたレスポンシブナビゲーションバーがiPhoneブラウザで更新した後にのみ機能するのはなぜですか?

分類Dev

Rails AJAXの削除メソッドが更新した場合にのみ機能するのはなぜですか?

分類Dev

tkinterフレームがウィンドウ全体に表示されないのはなぜですか

分類Dev

クロージャにバインドされたウィンドウのオンロードが常に実行されないのはなぜですか

分類Dev

テレグラムWebサイトのログインウィジェットが機能しなくなりました。最近更新されたブラウザにサードパーティのCookieを設定するにはどうすればよいですか?

分類Dev

カウントダウン機能がすぐに実行されるのはなぜですか?

Related 関連記事

  1. 1

    ウィンドウの場所が変更されたときにreactルータースイッチが機能しないのはなぜですか?

  2. 2

    NdisFSendNetBufferListsがFilterSendNetBufferListsから呼び出された場合にのみ機能するのはなぜですか?

  3. 3

    ウィンドウのサイズ変更中にtkinter.Tk.update()がブロックされるのはなぜですか?

  4. 4

    ハンドラーが最初に追加された場合にのみPythonログがstdoutを非表示にするのはなぜですか?

  5. 5

    Tkinterウィンドウでラベルが作成される前にtime関数とprint()が実行されるのはなぜですか

  6. 6

    Spy ++が実行されている場合にのみQtアプリケーションがウィンドウハンドルを作成するのはなぜですか?

  7. 7

    qtでQCustomPlotを使用すると、ウィンドウのサイズが変更された場合にのみグラフが描画されます。なぜですか?

  8. 8

    子プロセスのスポーンがウィンドウで機能するのにubuntuでは機能しないのはなぜですか?

  9. 9

    与えられたドロップダウンメニューから選択されたすべての可能な組み合わせについて、ウェブサイトから結果を「スクレイプ」するPythonプログラムを作成するにはどうすればよいですか?

  10. 10

    JSFフォームでいくつかの基準が満たされない場合にダイアログウィンドウを表示する

  11. 11

    メディアクエリがCSSの最後に配置された場合にのみ機能するのはなぜですか?

  12. 12

    ファイル名に「.xml」サフィックスがない場合、Chromeがブラウザに表示するのではなく、ローカルホスト上のgatsbyから提供されたxmlファイルをダウンロード/保存しようとするのはなぜですか?

  13. 13

    プロパティが変更された場合、Flutterウィジェットの再レンダリングはどのように機能しますか?

  14. 14

    このSQLSELECTが値が指定されている場合にのみ機能するのはなぜですか?

  15. 15

    このforループが、ゼロ番目のインデックスで繰り返される場合にのみ機能するのはなぜですか?

  16. 16

    このPythonサブプロセスコマンドがWindowsでshell = Trueの場合にのみ機能するのはなぜですか?

  17. 17

    マウントポイントとして機能するディレクトリへのコピー操作で、マウントされたドライブにデータがコピーされないのはなぜですか?

  18. 18

    許可されたユーザー(私が決定)のみを許可し、「アカウントの登録」機能を含まないiOSアプリのログイン機能を作成するにはどうすればよいですか?

  19. 19

    Androidの線形レイアウト列にプログラムで設定された重みが正しく機能しないのはなぜですか?

  20. 20

    最大化された後にブラウザウィンドウが復元されたときに、高さ修正コードが正しく機能しないのはなぜですか?

  21. 21

    Python tkinter:ボタンがクリックされるたびに新しいウィンドウではなく、クリック時に1つの子ウィンドウのみが作成されるようにするにはどうすればよいですか?

  22. 22

    Electron ApplicationMenuは、複数のウィンドウがある場合に最後のウィンドウでのみ機能します

  23. 23

    Python Tkinter では、キーバインドを正常に作成しましたが、tkinter ウィンドウをクリックした場合にのみ機能します。

  24. 24

    Javascriptで作成されたレスポンシブナビゲーションバーがiPhoneブラウザで更新した後にのみ機能するのはなぜですか?

  25. 25

    Rails AJAXの削除メソッドが更新した場合にのみ機能するのはなぜですか?

  26. 26

    tkinterフレームがウィンドウ全体に表示されないのはなぜですか

  27. 27

    クロージャにバインドされたウィンドウのオンロードが常に実行されないのはなぜですか

  28. 28

    テレグラムWebサイトのログインウィジェットが機能しなくなりました。最近更新されたブラウザにサードパーティのCookieを設定するにはどうすればよいですか?

  29. 29

    カウントダウン機能がすぐに実行されるのはなぜですか?

ホットタグ

アーカイブ