質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

4075閲覧

Pythonでウィンドウを作るモジュールについて。

toshiaki104

総合スコア15

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/03/12 01:46

Pythonでウインドウを作るモジュールtkinterについての質問です。

「いちばんやさしいPython入門教室」P156 「Pythonでウインドウ表示をしてみよう」
というlessonで、「GUIツールキット」の中からtkinterというモジュール?を使ってウインドウを作成する所です。

import tkinter as tk root = tk.TK() root.mainloop()

↑ これでウインドウを表示させると書いてあります。

僕が理解できる所は、import tkinter as tkとは、
tkinterモジュールを、importしてtkとして使う。
root=tk.Tk()

となっているので、tkには、tkinterが入っている。```

そして、tk.Tk()でウインドウが表示される。

そこで質問があります。

質問① tkinter.で繋がるTk()とは、どういう意味なのか?

    tkinterがモジュールの名前であるのであれば、

    Tk()は、(総称して)なんという機能で、どういう関係性にあるのか?

以前ランダムモジュールを使った時は、randam.randintと入力することで、
randomモジュールのrandintを使って、整数のランダムの数字を出しました。

このように、tkinterの中にもTk()の他にも色々な種類があるのでしょうか?

質問②

実際に、IDLEを使って、

import tkinter as tk

tk.TK()

↑のように入力すれば、root.mainloop()を入力しなくても、RUNした時にウインドウが表示されます。
教本には、

import tkinter as tk
root = tk.TK()
root.mainloop()

を使う事は、決まり文句のように覚えてくださいと書いてあります。

root.mainloop()
を使わなくとも、ウインドウが表示されるのに 
root.mainloop() を入力する意味を教えてください。

そして、**root.mainloop()**とは、どんな機能なのかも教えてください。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

質問1
Tk() は トップレベルWidget(メインウィンドウ)のクラスとなります。
tkinterモジュールの中にはTk()の他にも Button WidgetやLabel Widget、Text Widget などの数々のWidgetクラスをはじめ、変数の関連付けを行う StringVar, IntVar, DoubleVar, BooleanVarなどのサブクラス、Tk内で使用される TOP/BOTTOM/LEFT/RIGTHなどの 定義など様々なものが格納されております。

試しに

Python

1import tkinter as tk 2print(dir(tk))

として、モジュールの属性の一覧を表示してみてください。tkinterモジュールにどのようなものが格納されているか確認できるかと思います。

質問2
mainloop()は簡単に説明すると、『Tk上で発生したイベントの捕捉を行い、そのイベントに対応した適切な処理を行う箇所』となり、「イベント待ち」⇒「イベント処理」⇒「イベント待ち」・・・と無限ループのような実装となっております。

ここでいう"イベント"とは「ボタンが押された」「Windowが閉じられた」「Windowのサイズが変更された」「マウスでドラッグされた」などなどのイベントのことです

実際はこのmainloop()の中で描画処理(およびイベントに応じた更新処理)を行ってますので、このmainloop()を呼ばない限り tkアプリケーションは『基本的に何もしない』ということになります。

にも関わらず、IDEL上で動作する理由は

https://docs.python.org/ja/3/library/idle.html#developing-tkinter-applications

に説明がかかれております。
要は IDELにはtkinter開発支援機能として、この mainloop()と同等の処理をサポートしている(50msに一度の間隔で更新されるようです)ので mainloop() はコメントアウトしても良いということのようです。

投稿2019/03/12 04:49

編集2019/03/12 04:52
magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

tkinterに.で繋がるTk()とは、どういう意味なのか?

tkinter モジュールの TK メソッドを呼び出しています。
詳細は tkinter の公式ドキュメントを読んでみてください。

Tk()は、(総称して)なんという機能で、どういう関係性にあるのか?

モジュールの**「メソッド」**と呼ばれており、モジュールを操作するための機能です。

このように、tkinterの中にもTk()の他にも色々な種類があるのでしょうか?

はい、詳しくは公式リファレンス(英語)を読んでみてください。

root.mainloop() を入力する意味を教えてください。

そして、root.mainloop()とは、どんな機能なのかも教えてください。

こちらも詳しくは公式リファレンス(英語)を読んでもらいたいのですが、簡単に説明すると「ユーザー操作などのイベントを待ち受ける」機能です。

投稿2019/03/12 03:02

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toshiaki104

2019/03/12 03:34

ご回答ありがとうございます。 送って頂いたリンクを参考にして、勉強させて頂きます。
guest

0

こんばんは。

問題文読ませていただきました。

質問① tkinterに.で繋がるTk()とは、どういう意味なのか?

Tk() : 引数なしでインスタンス化します。これはTkのトップレベルウィジェットを生成します。通常、トップレベルウィジェットはアプリケーションのメインウィンドウになります。

要するに、Tkinterを扱うときの大枠の画面を作成するために、Tk()は呼ばれております。

参考 : https://docs.python.org/ja/3/library/tkinter.html#tkinter-modules

質問② root.mainloop() を入力する意味、どんな機能なのかも教えてください。

簡単に説明すると、継続的に大枠の画面を、表示し続けるために利用します。root.mainloop()を消してPythonを実行すると、大枠の画面が一瞬だけ表示されて、消えてしまうでしょう。

投稿2021/06/10 09:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問