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

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

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

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

Tkinter

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

解決済

pythonのTkinterでクライアントGUIを作ったのですが、エラーが出てしまいます。

0chihiro0
0chihiro0

総合スコア0

Python 3.x

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

Tkinter

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

1回答

0評価

0クリップ

4043閲覧

投稿2016/11/12 05:44

編集2022/01/12 10:58

###前提・実現したいこと
参考書を読みながら、Echoアプリケーションを作成中です。
言語はPythonで、tinter,syncope,functorsライブラリを使っています。
今回のコードはクライアント側なのですが、実行しようとしてもエラーが出てしまい、GUIの画面もうまく表示されません。
こういう場で質問することが初めてなので、至らないところがあるかもしれないので、その時はご指摘ください。

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

Traceback \(most recent call last\): File "/Users/CHIHIRO/Downloads/Python/Part3/11/client\.py", line 76, in <module> main\(\) File "/Users/CHIHIRO/Downloads/Python/Part3/11/client\.py", line 68, in main root\.after\(200, functools\.partial\(idle_task, root\)\) File "/Library/Frameworks/Python\.framework/Versions/3\.4/lib/python3\.4/tkinter/__init__\.py", line 593, in after callit\.__name__ = func\.__name__ AttributeError: 'functools\.partial' object has no attribute '__name__'

###該当のソースコード

Python3

# -\*- coding::utf-8 -\*- import tkinter import asyncore import functools class EchoView\(tkinter\.Frame\): """ Echo User Interface """ def __init__\(self, master\): super\(EchoView, self\)\.__init__\(master\) self\.listcontainer = tkinter\.Frame\(self\) self\.listbox = tkinter\.Listbox\(self\.listcontainer\) self\.yscroll = tkinter\.Scrollbar\(self\.listcontainer\) self\.listbox\.pack\(side=tkinter\.LEFT, expand=True, fill=tkinter\.BOTH\) self\.yscroll\.pack\(side=tkinter\.LEFT, expand=True, fill=tkinter\.Y\) self\.listcontainer\.pack\(expand=True, fill=tkinter\.BOTH\) self\.entry = tkinter\.Entry\(self\) self\.entry\.pack\(side=tkinter\.BOTTOM, expand=True, fill=tkinter\.X\) def get_submit_messegae\(self\): data = self\.entry\.get\(\) self\.entry\.delete\(0, tkinter\.END\) return data def show_message\(self, message\): self\.listbox\.insert\(tkinter\.END, message\) self\.listbox\.see\(tkinter\.END\) class EchoClient\(asyncore\.dispatcher_with_send\): def __init__\(self, view\): super\(EchoClient, self\)\.__init__\(\) self\.create_socket\(\) self\.buffers = \[\] self\.view = view self\.bind_all\(\) def bind_all\(self\): self\.view\.entry\.bind\('<Return>', self\.on_submit\) def on_submit\(self, event\): message = self\.view\.get_submit_messegae\(\) self\.buffers\.append\(message\.encode\('utf-8'\)\) def handle_write\(self\): if not self\.buffers: return buffer, self\.buffers = self\.buffers\[0\],self\.buffers\[1:\] self\.send\(buffer\) def writable\(self\): return self\.buffers def handle_read\(self\): message = self\.recv\(8192\) self\.view\.show_message\(message\.decode\('utf-8'\)\) def idle_task\(root\): try: asyncore\.loop\(count=1, timeout=1\) finally: root\.after\(200, functools\.partial\(idle_task, root\)\) def main\(\): root = tkinter\.Tk\(\) root\.after\(200, functools\.partial\(idle_task, root\)\) view = EchoView\(root\) view\.pack\(expand=True, fill=tkinter\.BOTH\) client = EchoClient\(view\) client\.connect\(\('localhost', 8080\)\) root\.mainloop\(\) if __name__ == '__main__': main\(\)

###試したこと
エラーメッセージにmain関数のfunctools.partailの部分が出ているので、functorsのドキュメントを読んだのですが、自分では原因がわかりませんでした。
ですので、助けて頂けるとありがたいです。
よろしくお願いします。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

ikedas
ikedas

2016/11/12 06:44

Pythonのバージョンを明記してください。また、参考にしている書籍 \(著者・標題・出版社と、参考にした箇所のページ数\) も教えてもらえますか。
0chihiro0
0chihiro0

2016/11/12 21:09

ご指摘ありがとうございます。編集しておきました。次からは載せるようにします。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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

Tkinter

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