くだすれPython(超初心者用) その39

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/24(金) 07:50:35.97ID:VD4/++xS
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その38
https://mevius.5ch.net/test/read.cgi/tech/1526522954/
2018/09/13(木) 00:34:51.38ID:ECzOVYUy

テキストファイルで"a"で始まる行を"----"に書き換えようとしたのだが、
"----"が"a"で始まる行ではなくテキストの最後に追加されます。
f.writeでも同じ。
助け舟お願いします。
2018/09/13(木) 00:41:01.41ID:ttzoAgZZ
ファイルサイズ変わるような途中の書き換えはできないので
素直に別ファイルに書き出しましょう
2018/09/13(木) 00:41:04.65ID:X3zFvlHv
>>202
このレスは何が言いたいの?
2018/09/13(木) 00:45:51.99ID:ECzOVYUy
>>211
そうなのか
サンクス
2018/09/13(木) 03:04:18.35ID:TyIiud+k
>>212
そこまでバカなら5chより幼稚園がオススメ
2018/09/13(木) 03:27:39.30ID:2ca+8xGJ
>>214
詳しく
216デフォルトの名無しさん
垢版 |
2018/09/13(木) 09:48:20.60ID:Ch5jIF+X
>>210
1行ずつ読み込むんじゃなく、read()で全部読み込んでまとめて置換して書き出したら?
2018/09/14(金) 01:19:44.19ID:13WSTRRA
tqdmについて質問です。
ラジオで今放送されている番組情報を表示するスクリプトを作っててプログレスバーを付けたいです。
https://i.imgur.com/saep34j.jpg

以下がそのコード一部です。これだとスクリプトを動かした時点がプログレスバーの0%の位置なんですが、
プログレスバーの0%の位置は番組開始時間、100%が終了時間、プログレスバー長さは現在の時間ってやる事で来ますか?
https://pastebin.com/BN0iYknv
218デフォルトの名無しさん
垢版 |
2018/09/14(金) 01:27:39.44ID:KCZmWOCp
なかなか面白い事やってるね
2018/09/14(金) 01:54:22.66ID:Vmeq3cpR
Ubuntu16.4の環境下でPython3.6でFlask+uwsgiでRESTサーバ作っており、
そこでロギングで壁に当たってます。

汎用loggerにTimeRotatingFileHandlerをaddして1時間毎にローテーションするように実装しました。
これはハンドラが作られた時間がローテションタイミングの基準点で、そこから1時間後に
ローテションって意味で、正確に毎時0分にローテーションというのは無理なのでしょうか?

また、1回目のローテーションまでは正常にローテーションしてるのですが、
2回目以降が1時間単位のインターバルが無効になってるように見え、一定のファイズサイズに達すると
勝手にローテートしてしてしまいます。 これによって1回目に退避されたログが2回目の
ローテーションファイルで上書きされていまい、実質ログが消えてしまいました。

これらの対策としては自分でTimeRotatingFileHandlerのサブクラスで拡張するや、
SocketHanderで受け側を作る構成にするか、または単純にFileHanderで永久出力して
logrotate.dでローテーションしたほうが安全なのでしょうか?

いろいろ検証してるのですが答えが見つからず・・・ 知っているかたいれば教えて対策教えてください。
2018/09/14(金) 02:15:35.00ID:13WSTRRA
>>218
変なことやってしまってますか?
2018/09/14(金) 02:38:02.20ID:YQ1y2eFS
>>219
>正確に毎時0分に、ローテーションというのは無理なのでしょうか?
そういう設定があるのでは?

>一定のファイズサイズに達すると、勝手にローテートしてしてしまいます
それは多分、ファイズサイズでローテートする設定にしているから

>これによって1回目に退避されたログが、2回目のローテーションファイルで上書きされてしまい
同じファイル名にならないように、ファイル名に時刻を付けたりすれば?

とにかく、ログローテーションの文書を読むしかないと思う
222デフォルトの名無しさん
垢版 |
2018/09/14(金) 03:25:15.25ID:KCZmWOCp
>>220
処理の仕方じゃなくて、目的がね
ラジオ番組の演目や進捗状況に活用って意味で
2018/09/14(金) 03:58:34.22ID:13WSTRRA
>>222
ミュージックプレーヤーのようにプログレスバーがあると、コンソールでも動きが出ておもしろいかなと思ってつけてみようと思いました。
224デフォルトの名無しさん
垢版 |
2018/09/14(金) 13:03:14.11ID:7Qnl0jfy
Rubyの ruby -e ‘p “hello”’みたいのはPythonでどうやるの?
できたとしてインデントどうするのかわからんけど
225デフォルトの名無しさん
垢版 |
2018/09/14(金) 13:34:13.63ID:6AOpn7AN
>>217
tqdmは手動で動かすこともできるので、番組開始時間や現在の時間から計算した値をセットすればできる

with tqdm(total=番組の長さ) as pbar:
pbar.update(番組開始から現在までの経過時間)
#残りはfor等で適宜update
2018/09/14(金) 14:31:48.36ID:GqHziv8p
>>224
シェルからってこと?
ruby言われてもわかんない

python3 -c 'for r in range(3): print("py")'
2018/09/14(金) 17:19:47.96ID:13WSTRRA
>>225
どうもありがとうございます
forの書き方はこれであってますか?
https://pastebin.com/Aapebfqk
https://i.imgur.com/tn4szbK.jpg
この書き方だと、スクリプトを動かしたすぐは0%のままで経過時間分のバーにはならず、forループの1回目が終わったら、経過時間をプラスした分メーターが進みました。

あと、プログレスバーの右側の
11372/14400 [10:18<50:51, 1.01s/it]
ってなってる所の表示を消したり変えたりする事も出来ますか?
tqdmのドキュメントにはプログレスバーの左側に文字を入れたりバーの色を変える方法は載ってたんですが右側の事は分かりませんでした。
2018/09/14(金) 17:26:16.68ID:tz1WlCUG
>>226
おおthx
229デフォルトの名無しさん
垢版 |
2018/09/15(土) 10:47:39.63ID:Rbm//AmR
みんなのpythonという参考書を終えたのですが次にやるレベルの参考書教えてくれませんか?
2018/09/15(土) 10:54:49.48ID:0IDKpbCI
https://www.packtpub.com/packt/offers/free-learning

タダやし好きなのをどうぞ
231デフォルトの名無しさん
垢版 |
2018/09/15(土) 11:20:31.39ID:WA7DfSYz
英語…
232デフォルトの名無しさん
垢版 |
2018/09/15(土) 11:38:53.49ID:AVfR6YnT
thx
233デフォルトの名無しさん
垢版 |
2018/09/15(土) 12:08:10.76ID:enopwIka
英語だけで怯んでたら何も出来るようにならんぞ
234デフォルトの名無しさん
垢版 |
2018/09/15(土) 12:24:03.66ID:QOgSOXWg
>>229
何作りたいの?
人工知能ならゼロから作るディープラーニング
WEBアプリならdjangoの公式チュートリアル
2018/09/15(土) 12:44:48.44ID:FXFGXSpW
>>229
職のためにやってるならDB、Django、AWS、Docker、HTML
趣味のためにやってるならスクレイピング、SQLite、PyGame

人工知能はあまりおすすめできない
大半の人間には難しいものだし、学習データを大量に用意できないと話にならんし
236デフォルトの名無しさん
垢版 |
2018/09/15(土) 12:57:03.70ID:eH38IGCF
>>227

pbar.update(keikaJikan)
の後に
pbar.set_description(refresh=True)
いれたら?
ドキュメントに詳しい記述がなかったので
うまくいくかわからないけど
237デフォルトの名無しさん
垢版 |
2018/09/15(土) 13:04:52.29ID:eH38IGCF
>>227
ごめんよく見たらrefresh()があった
set_description(refresh=True)
のかわりrefresh()入れてみて
2018/09/15(土) 17:06:04.40ID:uTfOzQke
>>234
「みんなのpython」読んだばかりの初心者に、
その後すぐ「ゼロから作るディープラーニング」を勧めるのはどうかと
2018/09/15(土) 17:20:15.56ID:Ek2iwFvX
>>227
そういう表示変更したいならprogressbar(2)のwidgets使ったほうが便利そう
240デフォルトの名無しさん
垢版 |
2018/09/15(土) 17:58:30.21ID:QOgSOXWg
>>238
そうかもね
でも名著なのば間違い無いでしょ
241デフォルトの名無しさん
垢版 |
2018/09/15(土) 20:08:55.40ID:jV44o+ul
>>235
何をやりたいかで変わるんじゃないの?
何も目的もなく、Python習得するわけじゃないだろうから
242デフォルトの名無しさん
垢版 |
2018/09/15(土) 20:12:40.41ID:8rxpHkWL
何をやりたいかで変わらんと悟るまでpythonチュートリアル何遍でも読み返しとったらええねん
2018/09/15(土) 22:34:28.61ID:VdLZkjGs
この2冊は双子だから、両方読む。
たのしいRuby 第5版、2016
みんなのPython 第4版、2017

入門書の次は、どの言語でも「Effective 何々」

Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説

Effective Python ―Pythonプログラムを改良する59項目、2016

Web フレームワークは、無料のRails チュートリアルをやってから、

掌田津耶乃の、
Python Django 超入門、2018
Node.js超入門、2017
2018/09/15(土) 23:45:55.32ID:3GwANLPp
みんなのGO言語は?
これは兄弟じゃないの?
2018/09/16(日) 00:20:27.43ID:0MknoGjv
>>236、237、239
どうもありがとうございます!
その関数とprogressbar2について調べてみます。

>>227 ので動かしてみているんですが、どうも番組終了時間になって次の番組が表示されるタイミング時点で偶にバーはまだ68%しか進んでいなかったりしました。
それでも時間が来ると次の番組情報は表示してくれるんですが何となく気持ち悪かったです。

夏休みからPythonをはじめたプログラム未経験文系豚JKの場合です。
自分が読んだ本は退屈なことはPython〜、入門Python3、Pythonではじめるデータラングリング、PythonによるWebスクレイピング、Pythonによるデータ分析入門をそれぞれ流し読みしました。
Pythonによるデータ分析入門は分析そのものの説明じゃなかったので自分には全く読めませんでした。
このスレでたくさん教えてもらって、radikoの一日の番組表の表示、今放送されている番組の表示、録音、自動でファイルへのタグ付け、オンエア曲の情報の表示やSQLに保存する、がとりあえず動くようになった。
上の過程でrequestsの使い方が分かったので、録音が終わったらSlackへの通知や、コンソールを使って動かすんじゃなくて、Hubotを使ってSlackのBotに話しかけて上の操作が出来るようになった。
次はradikoプレミアムのログインや認証にチャレンジしたいけれど、さっぱり分からない。

Pythonで何が出来るのか分かっていないから他に何をやりたいという事が思いつかないので、学習のモチベも保てない。
マルチタスク?マルチスレッドについて学ぶために番組情報の表示と再生が出来るようにしたらいいですか?
もっと面白いことやりたいです。
2018/09/16(日) 01:54:46.83ID:EK9e0hMh
女性なら「たのしいRuby 第5版、2016」をすすめる。
Rubyの女神・女優の池澤あやかも女性

Ruby でも、Selenium WebDriver で、スクレイピングするとか

その後は、Web アプリの開発。
無料のRails チュートリアルをやる

ログインぐらいなら、Selenium WebDriver で、
自動操作で、ユーザー名・パスワードを入力して、ログインできる

Showroom のメニュー・アバターなども、うっとおしいから、それで消してる
2018/09/16(日) 05:21:28.05ID:RAxt/rA1
Ruby勧めてどーすんの
2018/09/16(日) 05:50:28.28ID:32fLF0l4
ガイジに一般的な思考で対応するな
2018/09/16(日) 12:25:11.08ID:TMbORASx
とりあえず入門python3やります
250デフォルトの名無しさん
垢版 |
2018/09/16(日) 14:41:53.91ID:8ER5Tq3J
>>249
effective pythonにすれば?
251デフォルトの名無しさん
垢版 |
2018/09/16(日) 17:55:04.89ID:Zt4iEZ/q
ちわーくっそ初心者です。

tryとexceptの構文について質問です。

以下のコードでわざとValueErrorがでるように
ターミナルに文字列を入力してるんだけど
except ValueErrorしてても例外処理できないんですが、なぜだかわかる方いらっしゃいますか?

環境
python 3.6.5
mac OS 10.13.6
Atom

コード
a = int(input('type a number'))
b = int(input('type another'))
try:
print(a/b)
except ZeroDivisionError:
print('無効な入力 / Invalid input')
except ValueError:
print('数値を入力してください')

ターミナル
type a numberあ
Traceback (most recent call last):
File "ExceptPractice.py", line 1, in <module>
a = int(input('type a number'))
ValueError: invalid literal for int() with base 10: 'あ'
2018/09/16(日) 17:59:16.64ID:75aeC/cD
本気で言ってるのか
inputの位置とtryブロックの範囲をよく見ろ
2018/09/16(日) 18:00:51.59ID:ynEgKPZ+
Python3のhttp.serverモジュールだけど
HTTP/2には対応しないのかな。
2018/09/16(日) 18:20:04.63ID:MHdxl4uh
公式のチュートリアルでおk
255デフォルトの名無しさん
垢版 |
2018/09/16(日) 18:22:33.91ID:Zt4iEZ/q
>>252
アンタァ数時間におよぶ疑問を解決してくれた救世主だよ
ありがとうございました
256デフォルトの名無しさん
垢版 |
2018/09/16(日) 18:29:11.76ID:HF0YmRsW
これはひどい
2018/09/16(日) 20:07:13.91ID:nqHAh3X3
こういうやり取りは良いと思うな
258デフォルトの名無しさん
垢版 |
2018/09/18(火) 12:20:43.82ID:IalC5NJv
>>209の様にファントを変えて投稿するには
どうするのですか?
2018/09/18(火) 13:06:11.53ID:Gab8FMCl
>>258のビューワが勝手にASCIIアートと判断してるだけじゃね。
自分のビューワだと同じフォントに見えるよ
2018/09/18(火) 19:28:18.62ID:5C+j+SZY
モジュールAからモジュールBをインポートすることでモジュールAのメソッドの定義を上書きしたいんだけど可能?
261デフォルトの名無しさん
垢版 |
2018/09/18(火) 19:36:01.79ID:32W6TMTL
モジュールAをインポートせずにモジュールBだけインポートすれば良いのでは?
2018/09/18(火) 19:45:53.01ID:5C+j+SZY
m1.py
―-
class C1:
 def f1(self):
  print(‘aaa’)

import m2
―-

m2.py
―-
def f2(self):
 print(‘bbb’)

from m1 import C1
C1.f1 = f2
―-
とかできない?
263デフォルトの名無しさん
垢版 |
2018/09/18(火) 20:15:26.82ID:3Z5SLW4f
そおゆうトリッキーな事はできないと思え
2018/09/18(火) 21:34:34.65ID:3PaEdz0L
>>263
お前なら出来るだろ?
2018/09/18(火) 21:34:50.63ID:5C+j+SZY
class C1:
 def f1(self):
  print(‘aaa’)

def f2(self):
 print(‘bbb’)

C1.f1 = f2

C1().f1() #=> ‘bbb’
はできるのに?
266デフォルトの名無しさん
垢版 |
2018/09/18(火) 21:44:32.07ID:3Z5SLW4f
>>265
そおゆうトリッキーな事は今すぐ忘れろ
それはできないのだ
2018/09/18(火) 21:54:38.88ID:MzzhSWkv
C1.f1 = f2をm1でやるんじゃだめなんか?
268デフォルトの名無しさん
垢版 |
2018/09/18(火) 21:57:26.18ID:6b03zZt1
すいません、手でカチカチっとダブルクリックした方が
早いようなことをパイソンにやらせるのはどうしてでしょうか
269デフォルトの名無しさん
垢版 |
2018/09/18(火) 21:57:40.61ID:3Z5SLW4f
>>267
ダメにきまっとるやろw
バカはしばらく黙っとけw
2018/09/18(火) 22:04:25.92ID:5C+j+SZY
テストの時にimportすると定義を上書きしてスタブを使うとかやりたいのだ
271デフォルトの名無しさん
垢版 |
2018/09/18(火) 22:07:14.79ID:3Z5SLW4f
>>270
トリッキーな事をしたかったらせめて自分で調べて理解できるようになってからやれ

これ以上はつきあわんぞ俺はまた無能に戻るからな
2018/09/19(水) 00:05:43.10ID:McwJY1yY
>>271
結局何も情報提供してないのに無能に戻るとどうなっちゃうの?
273デフォルトの名無しさん
垢版 |
2018/09/19(水) 12:06:37.88ID:kBVhwTEM
>>262
C1を継承したクラスC2を作ってオーバーライドするのが真っ当だと思う

import m1
class C2(m1.C1):
def__init__(self, *args, **kwds):
super().__init__(*args, **kwds)

def f1(self):
print(‘bbb’)
274デフォルトの名無しさん
垢版 |
2018/09/19(水) 12:10:33.79ID:kBVhwTEM
>>270 を読んでなかったわ
275デフォルトの名無しさん
垢版 |
2018/09/19(水) 12:18:54.82ID:PupZqwJJ
最後に C1 = C2 で桶
2018/09/19(水) 12:30:17.29ID:j0vZv9bU
>>268
そういう作業を何千回もやる可能性があるならプログラムにやらせたほうが楽で正確だから

作業の回数が1日1回レベルだったとしても、毎日やらなきゃいけないなら
やり忘れや、ちょっとした間違いを防ぐためにプログラムにやらせたほうがいいから

単純にプログラムを書くのが楽しいから
2018/09/19(水) 15:16:53.25ID:bRibFDbQ
pythonってVisualStudioで使えますか?
278デフォルトの名無しさん
垢版 |
2018/09/19(水) 17:57:22.09ID:2g+A18ll
>>277
使えるよ
使ってる奴あんまいないけど
279デフォルトの名無しさん
垢版 |
2018/09/20(木) 00:31:03.27ID:v2140bTt
ありがとうございます
言語変えるたびに環境変数とかいじったりって面倒臭そうなので
助かります
280デフォルトの名無しさん
垢版 |
2018/09/20(木) 09:49:06.07ID:dj+2oZ6y
大量にあるDataFrameのデータの日付が
Year, month, day, ...
という感じで各時間区分ごとに別れて入っているのですが、これをtimestampに変換するいい方法はありますか?
2018/09/20(木) 10:51:05.31ID:fiW+YUJ7
>>280
とりあえずここを見て使えそうな処理を使えばいい
https://docs.python.jp/3/library/time.html

俺だったらテキストとして結合して、strptimeで処理するかな
桁揃えの必要があるならzfillを使う
282デフォルトの名無しさん
垢版 |
2018/09/20(木) 11:11:45.64ID:dj+2oZ6y
>281
ありがとうございます、テキスト結合→strptimeをforループで回してタイムスタンプのみの配列を作るのをやってみたんですが、レコードが数百万個あるので速度からすると数十分かかりそうでした。
forループを使わずになんとか早くする方法はないでしょうか?
283デフォルトの名無しさん
垢版 |
2018/09/20(木) 12:19:46.96ID:7WHuQIEO
numpyに入れる
2018/09/20(木) 13:48:45.51ID:fiW+YUJ7
>>282
1回だけの処理なら中断保存・再開できる仕組みを入れつつ数十分ぐらい我慢しろ
何度も処理しなきゃいけないなら、処理が遅いPythonにやらせるべきじゃない
CやJavaみたいな処理が早い言語にやらせるべき

あと、リストを渡すと処理したリストを返してくれる関数は
内部的にはforループ使ってる
だから「forループを使わずに」なんて無理
2018/09/20(木) 14:06:39.21ID:2iENFSTM
年月日がバラバラならtimestampのコンストラクタに年月日をそれぞれ渡したほうが多少は早いんでないの?
286デフォルトの名無しさん
垢版 |
2018/09/20(木) 14:55:31.07ID:tnMs4KBD
>>284
numpyみたいに内部的にはCで実装されてるライブラリもあるから使いこなせばPythonでも十分有望
287デフォルトの名無しさん
垢版 |
2018/09/20(木) 15:49:34.65ID:gMhM2k+x
>>284
面白いねw
288デフォルトの名無しさん
垢版 |
2018/09/20(木) 18:01:52.58ID:HnUdBV/V
WEBフレームワークにflaskを採用しようと思ってる超初心者プログラマーですが、flaskは仕事で一生使えるフレームワークなのでしょうか?
フレームワークに流行り廃りはあるのは承知ですが今学ぶならRailsみたいに人気のあるフレームワークを勉強した方がいいでしょうか?
2018/09/20(木) 18:07:51.35ID:wnlFKUtW
自然言語で何語を勉強しようかと迷うのに似てる
290デフォルトの名無しさん
垢版 |
2018/09/20(木) 18:22:22.52ID:HnUdBV/V
>>289
何を選べば無難ですか?
291デフォルトの名無しさん
垢版 |
2018/09/20(木) 19:31:20.85ID:DBWB48iV
>>288
そもそもweb屋自体おまえが働ける間生き残り続ける可能性が低いんやからいらん心配せんで好きなんやれや
292デフォルトの名無しさん
垢版 |
2018/09/20(木) 21:45:31.05ID:Mlnbbzfh
tf-nightly 1.12.0.dev20180920 has requirement keras-applications>=1.0.5, but you'll have keras-applications 1.0.4 which is incompatible.
tf-nightly 1.12.0.dev20180920 has requirement keras-preprocessing>=1.0.3, but you'll have keras-preprocessing 1.0.2 which is incompatible.
tf-nightly-gpu 1.11.0.dev20180917 has requirement keras-applications>=1.0.5, but you'll have keras-applications 1.0.4 which is incompatible.
tf-nightly-gpu 1.11.0.dev20180917 has requirement keras-preprocessing>=1.0.3, but you'll have keras-preprocessing 1.0.2 which is incompatible.
keras-applicationsのバージョンが足りないって警告がでてくるんですがpip install keras-applications --upgradeを入力してもすでに入ってるって言ってきます
どうしたらいいでしょうか
ubuntu16.04.3
2018/09/20(木) 22:02:59.66ID:kFoauySG
>>290
Pythonを選ぶ時点で大冒険なので大差ない
294デフォルトの名無しさん
垢版 |
2018/09/20(木) 22:23:37.92ID:8Bepevhe
>>282の用途なら、juliaがいいんじゃないの?
って思った
Pythonのライブラリも呼び出せるし、移行はカンタン
CSV読み込み用の不特定な型の集合を扱えるDataFrames構造も使えるから
元々大規模なデータ解析の為にjuliaが作られたようなもの

荒らしになるだけなので、この辺で
2018/09/21(金) 00:13:59.10ID:m8DL5ZJ4
>>288
掌田津耶乃
Python Django 超入門、2018
Node.js超入門、2017

Rails は、すべての言語のフレームワークの基礎になっているから、
無料のRails チュートリアルをやるのが定番

本当は、シンプルサーバー・Sinatra などで、フルスクラッチで書いていくと、
フレームワークを自作するのと同じになるから、よくわかる
296デフォルトの名無しさん
垢版 |
2018/09/21(金) 07:37:02.86ID:PZuz7ukr
>>288ですが無難にrailsにすることにしました
色々相談に乗ってもらってありがとうございました
2018/09/21(金) 07:47:52.29ID:IzrcU96S
それがよい
2018/09/21(金) 08:34:45.57ID:OMTVor1h
>>296
念の為言っとくが295はpythonスレでruby宣伝を何度注意されても辞めないム版で有名なrubyガイジだからな
299デフォルトの名無しさん
垢版 |
2018/09/22(土) 13:39:42.64ID:xOVRbYWf
>>295
書き込みと売り上げが連動してるのか
宣伝乙
2018/09/24(月) 02:48:42.15ID:6gosj3pF
tkinter学んでいるプログラム初心者です。
入力欄に文字を書いて、ボタンを押すと入力した文字が入ったメッセージボックスが出てくるというプログラムを作っています。
下記プログラムにて下から4行目のlambda式はどういった意味を持つのでしょうか?確かにlambdaの記述を省くとうまく動作しないのですが、なぜそうなるのか分からなくて・・・教えてください。

import tkinter as tk
import tkinter.messagebox as tkm

root = tk.Tk()
root.title("messagebox use")
root.geometry("400x300")

#メッセージボックス生成
def showMassage(text):
tkm.showinfo("info",text)

static1 = tk.Label(text="input space")
static1.pack()

#Entry 記述
entry1 = tk.Entry(width=50)
entry1.insert(tk.END,"言葉を入れてください")
entry1.pack()

#button 設置
button1 = tk.Button(text="push",width=50,command=lambda:showMassage(entry1.get()))
button1.pack()

root.mainloop()
2018/09/24(月) 08:23:14.19ID:hrySGkvz
>>295
掌田さんの本同じシリーズのNode.jsは読んだが
取っつきやすさはいいものの実用性は低いよな
あと付録のダウンロードサンプルが酷い
2018/09/24(月) 08:52:45.17ID:WK7dhq80
>>300
多分だけどlambda使わないと
ボタンが作られた時点で関数が実行されて
メッセージボックスが開いてしまうんじゃないかな
2018/09/24(月) 13:07:01.64ID:6gosj3pF
>>302
確かに使わない場合はそのような挙動になりました。
2018/09/24(月) 17:20:23.86ID:WK7dhq80
lambdaの部分を普通の関数として書き換えると
def func():
def showMassage():
tkm.showinfo("info",entry1.get())
return func
これってコールバック関数といわれていて内側の関数は
イベントが発生した時(ボタンが押された時)しか実行されなくなる

command=showMassage(entry1.get())
だと常にcommandにshowMassage(entry1.get())の値が
入ったままの状態になってしまう

コールバック関数を詳しく説明できる能力がないです、ごめんなさい
305デフォルトの名無しさん
垢版 |
2018/09/24(月) 17:30:21.36ID:Kttr1loZ
decorator
2018/09/24(月) 17:37:31.00ID:y9vcPQXH
クロージャーで苦労じゃー
307デフォルトの名無しさん
垢版 |
2018/09/24(月) 18:41:43.61ID:otYBczLg
みんなのpython終わったばかりの初心者ですが画像認証はオライリーの本でいいですかね?
2018/09/24(月) 18:53:58.73ID:QjVDfSuK
>>307
マルチポストする屑カスはしね
309デフォルトの名無しさん
垢版 |
2018/09/24(月) 19:20:04.62ID:otYBczLg
>>308
聞いただけなのに(´・ω・`)
■ このスレッドは過去ログ倉庫に格納されています