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

■ このスレッドは過去ログ倉庫に格納されています
2018/03/17(土) 16:32:25.91ID:S1lkLDnv
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

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

前スレ
くだすれPython(超初心者用) その36
http://mevius.2ch.net/test/read.cgi/tech/1514805522/
2018/04/23(月) 15:32:45.72ID:sVI7fOBi
import aaa

 def on_button(…):
  child_window = aaa.ChildFrame(…)
  child_window.xxx = yyy
  …

こんな感じかね
2018/04/23(月) 15:57:59.47ID:sVI7fOBi
ついでにimportで1回しか実行されない原因はこれ
http://python.matrix.jp/pages/tips/import.html#id4
C言語でいうインクルードガード的なのが働いてる
563デフォルトの名無しさん
垢版 |
2018/04/23(月) 17:22:58.10ID:Lf5qXYif
ありがとうございます、大変勉強になりました。
頑張ります!
2018/04/23(月) 17:39:53.20ID:HUlTGC1I
>>560
wx.Frame.Showをimportするファイルに書くなって意味なんだけど、伝わりませんか、、、そうですか、、、すみません。
565デフォルトの名無しさん
垢版 |
2018/04/23(月) 18:24:03.12ID:NdLOIshu
わたしには伝わりました!
566遊園地
垢版 |
2018/04/23(月) 18:38:50.30ID:/QV9I6Db
>>555
.pyファイルを1つの関数が代わり使うとは大胆だな。

単純に、 >>561
import aaa

aaa.pyファイルの中身を関数かクラスにする。
567遊園地
垢版 |
2018/04/23(月) 18:42:03.15ID:/QV9I6Db
遊園地ww 公式ですと、こんな感じですなww

----aaa.py----
import bbb

bbb.A()

----bbb.py-----

def A():
print('Hello World')
2018/04/23(月) 20:14:08.95ID:vFsvQnxK
>>555
もしかしてimportするスクリプトにグローバルに書いてるのか
もしそうなら、面倒でも何か関数をdefして(例えばopen_window() とか名前を付けて)
その中にグローバルで書いてた処理を移動すべし

def on_button( self, evt ):
 import aaa
 aaa.open_window()

という風にすれば、on_button() を呼び出す度にopen_window()が確実に実行される
569デフォルトの名無しさん
垢版 |
2018/04/23(月) 21:07:24.03ID:6SrNRF4N
568さん、今日1日でここまで教えていただけると思わなかったです!

ほんとありがとうございます!
2018/04/23(月) 21:34:33.91ID:Mytq4Fn/
>def on_button( self, evt ):
>import aaa
のaaa.pyのどんなことを書いてあるんだろ?

>>569
>>553のdef on_button( self, evt ): の処理部をaaa.pyに書いて
動くように出来る?
571553
垢版 |
2018/04/23(月) 21:59:54.79ID:3UVOgM3N
ああわかったよ、書けばいいんだろ、、、

>>>aaa.py
import wx

class ChildFrame(wx.Frame):
<中略>

>>>main.py
import wx
from aaa import *

class MainFrame(wx.Frame):
<中略>

def on_button(self, evt):
child_frame = new ChildFrame(self, wx.ID_ANY)
child_frame.Show()
572553
垢版 |
2018/04/23(月) 22:06:09.88ID:3UVOgM3N
すまん、インデントが消えた。

ちなみにwxの子ウィンドウには親の参照渡しとかないと、親を閉じたときにアプリケーションが勝手に終了してくれないから
アプリケーションのメインウィンドウ以外には親を渡した方が良い。
これはaaa.pyに子ウィンドウを表示するグローバル関数を定義する場合も同じ(関数の引数として親を渡せるようにする)
じゃないと、出したフレーム片っ端から閉じないとプログラム終了しなくなる。
573553
垢版 |
2018/04/23(月) 22:17:49.55ID:3UVOgM3N
new ってなんだよ、、俺。
「new ChildFrame(・・・」のnewはいりません、ごめんなさい。
574デフォルトの名無しさん
垢版 |
2018/04/23(月) 22:22:44.80ID:6SrNRF4N
奥深いっす…でも楽しみです!
ありがとうございます!
2018/04/23(月) 22:34:59.73ID:M4g+UNEZ
>>572
俺、超低脳でさっぱり分からないんだけど、
>wxの子ウィンドウには親の参照渡しとかないと、親を閉じたときにアプリケーションが勝手に終了してくれない
その親の参照渡しは>>571のどこに記述されているんだ?
2018/04/23(月) 22:36:33.56ID:3UVOgM3N
>>575
ChildFrameのコンストラクタの第一引数。
2018/04/23(月) 22:40:44.90ID:3UVOgM3N
ていうとわかりにくいか?

child_frame=ChildFrame(self・・・
のself
578デフォルトの名無しさん
垢版 |
2018/04/23(月) 22:51:42.66ID:jJWBqt/a
遊園地召喚
2018/04/23(月) 23:04:48.51ID:M4g+UNEZ
>>577
俺の知識では理解は無理だが、その部分なのか(そもそも、クラスを理解している奴なら質問しないだろうが)
ついでに、
>>553>>571のような回答をくれればよかったんだろうがな(元の質問が別ファイルに子windowの記述がある)
一方、>>574は素直に>>553>>570のようにするにはどうすれば良い?と質問すればよかったんだろうが
超初心者は俺もだがコミュ力ないから回答得るのに遠回りするよな
このスレは>>576で出たコンストラクタも、これ何?レベルの奴が質問だろうからな
2018/04/23(月) 23:14:47.88ID:3UVOgM3N
すまんね。

553書いたときはクラス一つ別のファイルに移動してそれを使うことが出来ない人がwx使ってウィンドウ出せるなんて思ってなかったんだよ。
2018/04/23(月) 23:27:13.13ID:M4g+UNEZ
>>553
コミュ力ない人の質問だと本当に教えてほしいことが相手に伝わらないことが多いから
回答する人は要エスパー力だからな
2018/04/23(月) 23:31:46.35ID:M4g+UNEZ
>>581>>580
583デフォルトの名無しさん
垢版 |
2018/04/23(月) 23:52:25.59ID:2sWKRyd2
以下のコードを実行するとエラーになります
どうすればいいのでしょうか・・・

y = 10
print(f'test y = {y}')
584デフォルトの名無しさん
垢版 |
2018/04/23(月) 23:56:38.04ID:2sWKRyd2
すいません3.6から実装されたf文字列というんですね
3.5だからエラーになるわけだ(´・ω・`)
585遊園地
垢版 |
2018/04/24(火) 08:01:24.83ID:G5LttnIJ
別バージョンのpython入れてから、物凄いトラブってる。

dpkg-deb: エラー: サブプロセス ペースト がシグナル (Broken pipe) によって強制終了されました
処理中にエラーが発生しました:


フォーカスの処理とかしてないが、呼び出すだけなら、コレで良い?
試しては無い。

def Sample():
sub_win = Tkinter.Toplevel()
sub_win.title(u"Sub Process")
sub_win.geometry("400x300")

Sample()
586デフォルトの名無しさん
垢版 |
2018/04/24(火) 08:37:58.18ID:AdXJnnP5
馬鹿には無理
2018/04/24(火) 10:09:50.76ID:jhtbgK3V
jupyter labとnotebookどっも括弧やクォーテーションの補完が効かないんだけどデフォ?
それともなんかおかしい?
588デフォルトの名無しさん
垢版 |
2018/04/24(火) 14:47:46.65ID:xQCRvp4n
553さんは普段仕事でpython利用されてるんですか??
2018/04/24(火) 14:48:37.60ID:QI4dBYy7
マルチ拝観
2018/04/24(火) 15:37:30.64ID:WvdWgq+O
現場ですぐに使える! Pythonプログラミング逆引き大全 313の極意 
って初心者向き?
2018/04/24(火) 16:20:06.53ID:dUrN2wLw
>>587
デフォルトでは補完されることになつているはず。
今の状態だとIpythonでも補完できないと思うが?
2018/04/24(火) 17:07:25.08ID:Mdvhp2Yn
すみません、質問です。
初歩的なことかもしれませんが、
Pythonを使うエディタで秀丸使ってるんですけど、
他のsublimeとかのほうが使いやすいですか?

秀丸だとインデント打つのが面倒で・・・。
ご回答よろしくお願いします。
2018/04/24(火) 17:26:32.99ID:KvfUX4Up
そのうちプログラム打つのが面倒とか言い出しそうだな
594デフォルトの名無しさん
垢版 |
2018/04/24(火) 17:28:48.89ID:QI4dBYy7
秀丸は割と良い方
2018/04/24(火) 17:39:44.58ID:1D4v+3Mx
VSCode は?
2018/04/24(火) 17:41:28.56ID:ftYeuzTX
>>588
本業はc++
そっちでwx使ってるから、wx周りはそこそこ詳しいってだけ。
pythonは趣味。
2018/04/24(火) 18:12:28.83ID:eLoUapjt
意地張ってないでpycharmにしなさい。どうせpythonしか書かないでしょ。
2018/04/24(火) 19:36:02.20ID:8pq7pLvE
>>592
俺は扱えないけど、プログラムのためのエディタはvimが良いらしいらしいよ

>>597
低脳にはそんな素晴らしいIDEは猫に小判だろう
書くPythonだって100行もいかないだろうし、そして、モジュールの中を見ることもないだろう
2018/04/24(火) 19:47:17.37ID:h25jwsU+
>>591
ipythonでも補完できない。なんかなくちゃいけないファイルが無いんかなあ、探してみます。
2018/04/24(火) 20:18:42.40ID:Mdvhp2Yn
>>598
vimは関係ないですよ。
プログラミング書くのに適してませんし。

>>598
趣味でPythonやっている>>553さんに「低脳」って言うのは言い過ぎだと思いますよ。
2018/04/24(火) 20:28:24.71ID:PPDUXdzL
Vimが適してないとかアホか
お前がプログラミングに適してねえよマヌケ
一生懸命ひでまるおしてろ
2018/04/24(火) 20:35:04.99ID:Mdvhp2Yn
vimでプログラミングするって冗談じゃなかったのかw
これは真性だな・・・

俺はもう実務でPython扱ってるよ
すでに300行以上書いた
明日からちゃんとしたエディタインストールするわ

あとみんなレスするときはアンカー(>>)をつけるように
誰に対して言ってるのかわからない独り言みたいだからね
2018/04/24(火) 20:46:20.64ID:yGK7zMMt
配列の例題なのですが

str = "Hello"
str2 = ""
for n in str:
str2 = str2 + (n * 2) + '~'
print(str2)

これのstr2 = ""は何をする為に必要なんでしょうか?
2018/04/24(火) 20:55:41.97ID:8pq7pLvE
>>603
試しに、str2 = "" を #str2 = "" して見ればOK
str2 = [] や str=0でもOKだが
2018/04/24(火) 20:57:15.34ID:JriH9xMX
試しにコメントアウトしてみ?
2018/04/24(火) 20:58:23.94ID:JriH9xMX
あら、先越されたw
2018/04/24(火) 20:59:12.40ID:Mdvhp2Yn
>>604
えらい!
ちゃんとアンカーつけられたじゃないかw


今日も仕事頑張ったし
もう寝るわ
おやすみノシ
2018/04/24(火) 21:04:38.83ID:yGK7zMMt
コメントアウトしたらNameErrorと出ました。
これはstr2=""でとりあえず文字として定義してるってことですかね
2018/04/24(火) 21:07:01.25ID:8KBFlzDM
>>600
             「 ̄ `ヽ、   ______
             L -‐ '´  ̄ `ヽ- 、   〉
          /           ヽ\ /
        //  /  /      ヽヽ ヽ〈
        ヽ、レ! {  ム-t ハ li 、 i i  }ト、
         ハN | lヽ八l ヽjハVヽ、i j/ l !
         /ハ. l ヽk== , r= 、ノルl lL」
        ヽN、ハ l   ┌‐┐   ゙l ノl l
           ヽトjヽ、 ヽ_ノ   ノ//レ′
    r777777777tノ` ー r ´フ/′
   j´ニゝ        l|ヽ  _/`\
   〈 ‐ 知ってるが lト、 /   〃ゝ、
   〈、ネ..         .lF V=="/ イl.
   ト |お前の態度が とニヽ二/  l
   ヽ.|l         〈ー-   ! `ヽ.   l
      |l気に入らない lトニ、_ノ     ヾ、!
      |l__________l|   \    ソ
2018/04/24(火) 21:07:54.72ID:ChFyzKk0
>>607
まだ見てるよね
ちょっとお母さんと代わってくれる?
お宅のお子さんはちゃんと小学校に通わせましたか?
お猿の学校では駄目ですよ
って教えてあげないといけないんだ
2018/04/24(火) 21:20:09.03ID:8pq7pLvE
>vimは関係ないですよ。
>プログラミング書くのに適してませんし。
vimを使っている奴は、真性だな・・・と主張しているのか
2018/04/24(火) 21:33:10.24ID:dUrN2wLw
>>603
変数にstrが許されるのは小学生まで
2018/04/24(火) 21:46:40.49ID:gtAr5qY0
俺はvim使ってるけど確かにここの超初心者には勧めたくはないな
614デフォルトの名無しさん
垢版 |
2018/04/24(火) 21:48:12.19ID:UZrLd4N8
まさかのリアル厨房ワロタw
2018/04/24(火) 21:48:59.19ID:T7P20eIK
実際vimでコーディングする人は多いよ
きちんとカスタマイズしてやればIDEより軽いし機能も必要十分で普通に実用的
2018/04/24(火) 21:52:23.15ID:8pq7pLvE
>>608
何のために、str2=""でとりあえず文字として定義が必要と思った?
str2 = str2 + (n * 2) + '~'

str2 += (n * 2) + '~'
として、とりあえず文字として定義を止めるとNameErrorと出るか?
ついでに、大きく変更して
str2 = 1 + 1 にしたら、str2はNameErrorとでるか?
最後に、NameErrorと出たのは
str2 = str2 + (n * 2) + '~'
のどれだ?(一番目のstr2、2番目のstr2、(n * 2)、'~')
中学あたりの数式計算で、
x = 1
y = y+x
としたとき、yの値は得られると思うか
617デフォルトの名無しさん
垢版 |
2018/04/24(火) 21:55:10.72ID:BAt1Eldp
ぶっちゃけ君ら何歳?
2018/04/24(火) 21:56:45.13ID:T7P20eIK
>>608
for文の中でstr2から値を参照しようとしてる
定義していない変数を参照することは出来ないから、空でもいいから初期化しないといけない
初期化していないと「空であるかどうか」すら判定出来ない
619デフォルトの名無しさん
垢版 |
2018/04/24(火) 22:00:19.23ID:UZrLd4N8
オレ2年やけど体壊して1年休学してるから本当は3年やからな
なめんじゃねーぞ
620遊園地
垢版 |
2018/04/24(火) 22:24:57.07ID:G5LttnIJ
授業で入るなら、小中学生が増えてもおかしない。
ただ、5chに来るかは来ないかだと、来ないだろうけど。
621遊園地
垢版 |
2018/04/24(火) 22:26:08.73ID:G5LttnIJ
>>592

Geany使ってる。
2018/04/24(火) 22:32:00.39ID:yGK7zMMt
>>616
>>618
空っぽの変数として定義する必要があったってことですね。
プログラム初心者なもんで申し訳ない・・
2018/04/24(火) 22:41:45.33ID:WvdWgq+O
>>592
普通に秀丸使ってるけどな
なんだかんだ言っても使い慣れたエディタが楽
2018/04/24(火) 22:58:24.77ID:DKMQJI1I
pythonで作ったツールをexe化して配布しようとおもうんですけど
二次配布防止するにはどうすればいいですか?
今考えてるのはアイパスとコンピュータ名とかでhash値作ってサーバーに登録。
ツール起動時に毎回サーバーに問い合わせる、とかです。
ライセンスというほど大それたものでもないので、理想はサーバーつかわずに
初回に起動したそのpcじゃないと使えなくして、からくりがバレれば二次配布できちゃう
程度の精度でもいいんですけど。。
2018/04/24(火) 23:00:51.21ID:8KBFlzDM
exeを入れたzipにパスワードかけろ
2018/04/24(火) 23:01:00.08ID:1D4v+3Mx
ドングルとか?
627遊園地
垢版 |
2018/04/24(火) 23:01:33.49ID:G5LttnIJ
Q
 多言語みたいに型だけ宣言して置く方法とか有りますか?


int i
print(type(i))

# era-
SyntaxError: invalid syntax
628デフォルトの名無しさん
垢版 |
2018/04/24(火) 23:02:26.10ID:BAt1Eldp
HDD/SSDに署名程度で良くね
2018/04/24(火) 23:13:10.05ID:WvdWgq+O
>>624
大した物でないならならzipにパスワードで良いんじゃね?
そのサーバ維持やメンテナンス延々とするつもりならいいだろうがドメイン維持だけでもそれなりのコストになりそう
630遊園地
垢版 |
2018/04/24(火) 23:19:38.12ID:G5LttnIJ
>>624
起動時に、ユーザー名を拾って来て、適当なファイルに暗号化して入れる。

そのユーザー名と一致しなかったら、メッセージボック等を出して終了
631遊園地
垢版 |
2018/04/24(火) 23:22:31.35ID:G5LttnIJ
バツ 起動時に
マル 初回起動時に
2018/04/24(火) 23:24:30.20ID:vOUBS5cl
pythonをバイナリ化出来たとしても、中の依存モジュールに1つでもGPLが入ってたらソース公開しないとライセンス違反になる
結局ソース解析されるだけの様な気がするけど…
633遊園地
垢版 |
2018/04/24(火) 23:24:54.14ID:G5LttnIJ
win機で動くかわからないけど、下記が動作するか調べてみたら。

import os
T=EMAIL_SUBJECT_PREFIX = '[%s]' % os.uname()[1]
print(T)
2018/04/24(火) 23:24:56.76ID:DKMQJI1I
>>629
zipにパスワードって解凍して中身取り出せば再配布し放題ですよね?
レンタルサーバーは広告ありの無料とかでよいかなぁと。
635遊園地
垢版 |
2018/04/24(火) 23:26:30.59ID:G5LttnIJ
んごぉーーー

from socket import gethostname
T=EMAIL_SUBJECT_PREFX = '[%s]' % gethostname()
print(T)
2018/04/24(火) 23:31:45.21ID:8KBFlzDM
>>634
じゃあダウンロードサイトにもパスワードかけとけ
637遊園地
垢版 |
2018/04/24(火) 23:37:44.84ID:G5LttnIJ
>>634
心配しなくても、その程度のソフトなら二次配布なんて
しないよ。
2018/04/25(水) 01:21:27.42ID:kuotvUVn
>>636
ダウンロードサイトであーだこーだするなら、
ダウンロードさせるexeの内部に毎ダウンロードごとに異なるパスワード(hashとか)
を組み込んで、管理サーバーでこのパスとPC固有情報を関連付けすれば良いんじゃないのか。
管理サーバーを立てるぐらいの人ならこれぐらいは頑張って実現するだろう

>>624
それでexeの二次配布防止なるのか? exeは全て共通なんだろ。それで
管理サーバーはPC登録情報からexeが2次配布利用であると判断するんだ?
PCが登録しているかはわかると思うが
2018/04/25(水) 02:36:01.53ID:3okspJRg
オープンソースのライセンスを無視してバイナリ配布して
さらに自分だけコピープロテクトを掛けたりしたらサイトが炎上しそうだな

importするモジュールの選択にはくれぐれも気をつけてくれ
640デフォルトの名無しさん
垢版 |
2018/04/25(水) 04:16:24.63ID:wUGQlgZi
全部バイナリ化せんでも
肝心な部分だけDLL化pydとかpyc化して
それが無いと動かないようにするだけでもいいのに
2018/04/25(水) 09:06:01.80ID:00WI0MSP
>>634
過去何度もレンサバ撤退してる
数年経過して撤退したら日常で使ってたそのソフトが急に使えなくなる
更に開発者の君自身がそのソフトに興味を失っており(良くある話)コンタクトができない
無責任すぎでしょ
独自フォーマットの開発者とか見てても思うけど数は少なくても思いつきでやって
はしご外されると作ってる人の迷惑はかなりの物がある
642遊園地
垢版 |
2018/04/25(水) 10:04:00.25ID:aZgfWxV+
二次配布とか考えなくても、Vectorに登録する審査も通ると思えないけどな。
643デフォルトの名無しさん
垢版 |
2018/04/25(水) 10:36:51.42ID:NXDHFefE
なんでそんなにオコなの?
644遊園地
垢版 |
2018/04/25(水) 10:43:41.21ID:aZgfWxV+
5chの伝統芸だからぁあああwwwwwwwwwwww

年間利用者0とかザラだしww

  公開したら分かるんじゃないww
2018/04/25(水) 10:47:32.52ID:00WI0MSP
それはないと思う
ベクターにサンプルプログラムの教科書に載ってそうなスクリプト置いてるけど
毎月15件くらいDLされてる
2018/04/25(水) 11:44:31.69ID:OMoW5wMU
最初からwebアプリ作ればいいじゃん
647遊園地
垢版 |
2018/04/25(水) 11:52:34.70ID:aZgfWxV+
俺も2年間で60ダウンロードぐらいされてる。

コメントは1件だけ来た。


タイトル
無能

本文
無能なんですね。
648遊園地
垢版 |
2018/04/25(水) 11:55:04.74ID:aZgfWxV+
python,exe化して、ふぁいるりねーむ公開してたな。
絶対パス + 拡張子[指定] [XXX]付けたい名前 連番りねーむ

それだけの機能
2018/04/25(水) 12:00:31.01ID:00WI0MSP
>>647
www
でも、コメントが付くだけでも正直かなり羨ましわ
もう何年も5個くらいおいたままになってるけど何のコメントもない
でも、俺自身が10年以上使ってるし、使い方があえてば凄く便利だし
絶対に使ってる人いる筈なんだけどなぁ・・・
650デフォルトの名無しさん
垢版 |
2018/04/25(水) 12:44:42.62ID:SjKKaR2L
githubにうpしてたら勝手にforkされて勝手にバージョンアップされてた
2018/04/25(水) 12:50:09.33ID:00WI0MSP
>>650
その手も良いな
2018/04/25(水) 12:51:16.27ID:00WI0MSP
因みにどんなソフト
もし良ければ教えて
サンプルみたいなプログラムでも便利なら誰かアップしてくれるかな?
便利だから10年くらい使ってるけど、動作が微妙なんだよなぁー
2018/04/25(水) 13:47:37.24ID:sTzqaXBb
GAEで実行すると、datetimeを変換する際、
tzinfoになにを入れていても
time.mktime(t.timetuple())や
calendar.timegm(t.timetuple())
で、mktimeやtimegmを実行した時点で+9時間されてしまいます。
こういうものなのでしょうか?
2018/04/25(水) 15:21:07.84ID:sTzqaXBb
あ・・・勘違いしてました
ネットの変換ツールの方が+9時間してたようですorz
655デフォルトの名無しさん
垢版 |
2018/04/25(水) 15:25:25.19ID:SjKKaR2L
GAEのTimeZoneって変だよな
656遊園地
垢版 |
2018/04/25(水) 15:55:32.53ID:aZgfWxV+
,をリアルタイムで数えるには、どうすれば良いでしょうか?

現状では、
1秒毎にファイルを開いて、更新してます。
2018/04/25(水) 16:50:55.24ID:7/N1jaCm
>>656
その質問の仕方であなたが今なにをしていて、これから何をしたいと思っているのか解る人はいないと思う。
658遊園地
垢版 |
2018/04/25(水) 18:02:02.68ID:aZgfWxV+
テキストファイルの,カンマをカウントして居ます。
http://fast-uploader.com/file/7080202434072/
2018/04/25(水) 19:41:46.81ID:D5b6boQj
>>658
お前はteratailできけば良いだろ
2018/04/25(水) 20:11:28.16ID:/xWlXZY2
>>624
本体をwww鯖に置いて、配布するコードはそれをDLして呼び出すだけのものにする
配布コードに公開鍵置いて適当な認証コードを生成して鯖に送ってバリデーションする
配布コードは適当に難読化するか、バイナリにコンパイルしておく
プロテクションを強めにするなら毎回DL、そうでなければキャッシュOKにする
DLするファイル側にも日付やIPアドレスから鍵を生成して暗号化するとか、嫌がらせの方法はある
■ このスレッドは過去ログ倉庫に格納されています