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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

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

Python

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

Q&A

解決済

2回答

3901閲覧

異なるパソコン上でのtkinterの動作の違いについて

chem_search

総合スコア30

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

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

Python

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

0グッド

0クリップ

投稿2020/04/29 08:52

前提

とあるGUIのアプリをtkinterを用いて作りました。
それを作ったPCでは問題なく動作します。
動作内容はcsvファイルを読み込んで数値を処理するものです。

発生している問題・エラーメッセージ

このソースコードを別のPCにもっていき(コピーミスはありませんでした)、
同様に動かそうとすると、

AttributeError: module 'tkinter' has no attribute 'filedialog'

とエラーが出ました。

試したこと・聞きたいこと

少し調べてみると、filedialogはtkinterのサブモジュールであるから、
from tkinter import filedialog
とimportする必要がある、と書いてある記事を見つけ、
上記のようにimportし、ソースコード内の該当箇所を修正すると動くようになりました。
( tk.filedialog.~~と書いていたところをtk.を消してfiledialog.~~にしただけです。)

このように、あるPCで問題なく動作していたのに他のPC上では読み込めなくなる、
という現象はどういった原因が考えられるでしょうか。
(※Tkinterのバージョンはどちらも8.6で同じでした)

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

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

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

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

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

guest

回答2

0

ベストアンサー

AttributeError: module 'tkinter' has no attribute 'filedialog'

tkinterの属性(Attribute)ではなくサブモジュールであるため、

上記のようにimportし、ソースコード内の該当箇所を修正すると動くようになりました。
( tk.filedialog.~~と書いていたところをtk.を消してfiledialog.~~にしただけです。)

は正常な挙動です。

tk.filefialog は tk が何かわかりませんが、
import tkinter as tk としただけでは、
tk.filedialog では読み込まれません。

それを作ったPCでは問題なく動作します。

といった実行環境の方に原因がありそうです。


参考までに、対話環境での実行例

python

1>>> import tkinter as tk 2>>> tk.filedialog 3AttributeError: module 'tkinter' has not attribute 'filedialog'

python

1>>> import tkinter as tk 2>>> import tkinter.filedialog 3>>> tk.filedialog 4<module 'tkinter.filedialog' ...>

※ この場合は tk == tkinter なので、どちらでもアクセスできます。

最初の環境でモジュールが読み込まれているか試してみてはどうでしょう。

>>> import sys >>> import tkinter >>> "tkinter.filedialog" in sys.modules False >>> import tkinter.filedialog >>> "tkinter.filedialog" in sys.modules True

例えば、IDLE 上での実行なら "tkinter" が予め読み込まれている、等。
実行環境の違いによっては何か影響があるかもしれません。

投稿2020/04/29 10:41

teamikl

総合スコア8664

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

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

chem_search

2020/04/30 08:17

ご回答ありがとうございました。 大元のtkinterを読み込んだだけではサブモジュールは読み込まれないのですね。 先ほどモジュールに関するドキュメントを読み直し、理解することができました。 うまく動いたPC上での実行環境で何が起こっているか、提示して頂いた方法で確認してみたいと思います。
guest

0

Tkinterを使用したアプリケーションが一つのPCで問題なく動作し、別のPCでエラーが発生する現象は、環境設定の違いによるものが考えられます。特に、Pythonの環境やインストールされているライブラリのバージョン、パスの設定などが異なる場合、このような問題が起こり得ます。また、tkinter.filedialog Build Now GG のようなサブモジュールが正しく認識されないこともあります。

投稿2024/05/08 03:02

hebemiley

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問