2017-07-28 7 views
0

Pythonスクリプトとtkinterのやりとりを理解するのに助けが必要です。私は、この質問には既に答えられていると確信していますが、私はそれが見つからないので、検索条件が間違っていると思います。tkinterを使ってスクリプトの途中に情報を表示する方法

私は毎日、情報をテキストとして出力し、テキスト入力を行うPythonスクリプトを開発しました。多くの情報を表形式で表示する必要がある場所が1つあり、その仕事にtkinterを使用しようとしています。ですから、情報を表示するためのウィンドウ/ダイアログが表示され、OKボタンが押されて再び消えるようにしたいと思います。

tkinterを使用しているすべての例は、スクリプトの最後にtkinter mainloopを入力するように見えますが、これはすべてのデータの入出力がtkinterを通じて行われると思います。

私がこれまでに達成したベストは、すべてのデータが表示された状態でウィンドウを開き、ボタンで完全にスクリプトを終了します。

exitBut = tkinter.Button(frameButtons, text="Exit", command=exitFn) 
exitBut.grid(row=0, column=0) 
describeDialog.mainloop() 

あなたは私を作成する方法を理解し、Pythonスクリプトの途中で一時的なTkinterの窓を破壊する助けることができるしてください。

+0

私が正しく理解していれば、コマンドでウィジェットを消したいと思っています。これはここで答えられました - https://stackoverflow.com/questions/3819354/in-tkinter-is-there-any-way-to-make-a-widget-not-visible – flevinkelming

+0

あなたはおそらくtkinters 'toplevel'を使うことができますこれのための窓。トップレベルの使用は、tkinterのメインルートウィンドウの上に別々のウィンドウを開き、tkinterで行うことのできるものすべてに使用することです。 –

+0

'.update_idletasks' /' .update'を '.mainloop'の代わりに使うことができます。このスクリプトはあなたにいくつかのアイデアを与えるべきです:[名前付きPIL画像用のTkinterビューア](https://gist.github.com/PM2Ring/467cf3d1e884ea508efd996f95fd871e)。もう1つのアプローチはスレッドを使用することですが、スレッドでTkinterを適切に動作させることは難しいかもしれません。 –

答えて

1

単純な例ですが、これはベストプラクティスではないかもしれませんが、通常はtkinterを使用せずにスクリプトを書くことができ、tkinterで表示してからそのまま実行できます。

import tkinter as tk 

print("pretending to do something here") 

root=tk.Tk() 
root.title("my window") 

tk.Label(root, text="show something here").pack() 
tk.Button(root, text="ok", command=root.destroy).pack() 

root.mainloop() 

print("now we can do something else") 
print("note how execution of script stops at the call to mainloop") 
print("but resumes afterwards") 
+0

それは私が必要としていたものです。ありがとうございます。私が欠けていた部分は破壊だったと思います。 – Ant

+0

問題はありません.fyiでは、Xを使ってウィンドウを閉じると 'destroyメソッド 'も呼び出されますので、どちらの場合でも同じ動作が得られます –

関連する問題