Open TateIsuKanna opened 6 years ago
私に関係ないことかもしれませんが、socketで送るデータは数値ですか。それとも文字列ですか。
.sendall()
で送るのはbytesオブジェクトです.bytesオブジェクトはunsigned charの配列のような物です.
student_id
は文字列で,それを.encode()
でbytesオブジェクトに変換しています.
整数を送りたいならstruct
を使ってbytesオブジェクトに変換する必要があります.
ありがとうございます
UTF-8の問題が起こるのですがどうしたらいいでしょうか。
再現手順を教えて下さい. また,エラーが出るのであればそのままコピペして下さい.
import wx import socket
string=u""
def onEVT_TEXT_ENTER(evt): try: student_id=textbox.GetValue() if not student_id: return
#sock.connect(("192.168.11.8",55555))
#sock.sendall(student_id.encode())
#message_label_text.SetLabel(sock.recv(1024).decode())
message_label_text.SetLabel(u"Input:"+student_id)
textbox.Clear()
except ConnectionResetError:
#print(u"接続が切断されました.LANケーブル,ハブの電源を確認して下さい.")
print(u"setsudan")
except BaseException as ex:
#TODO:BaseException必須?
#print(ex+u"原因不明の例外です.")
print(u"reigai")
app=wx.App() frame=wx.Frame(None)
frame.Maximize() frame.SetTitle(u"shokudo-kanri-system")
font=wx.Font(100, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
textbox=wx.TextCtrl(frame,wx.ID_ANY,style=wx.TE_PROCESS_ENTER) textbox.Bind(wx.EVT_TEXT_ENTER,onEVT_TEXT_ENTER) textbox.SetFont(font) textbox.SetMaxLength(16)
student_id_label_text=wx.StaticText(frame,-1,u"gakusekiNo") student_id_label_text.SetFont(font)
message_label_text=wx.StaticText(frame,wx.ID_ANY,u"gakusekiNo wo nyuuryoku sitekudasai") message_label_text.SetFont(font)
vsizer=wx.BoxSizer(wx.VERTICAL)
hsizer=wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(student_id_label_text) hsizer.Add(textbox,proportion=1)
vsizer.Add(hsizer,flag=wx.EXPAND|wx.ALIGN_CENTER|wx.RIGHT|wx.LEFT|wx.TOP,border=100) vsizer.Add(message_label_text,flag=wx.RIGHT|wx.LEFT,border=100)
frame.SetSizer(vsizer)
app.SetTopWindow(frame) frame.Show(True)
app.MainLoop()
エラーが出るためコメントアウトしました
日本語のところのコメントアウトを外すとエラーになります。
エラーメッセージは以下の通りです SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0x90 in position 0: invalid start byte
wxPythonを選んだ理由は、tkinterは実際のGUIプログラミングではあまり使われてないということと、私自身がwxPythonを使ってみてわかりやすく、便利だと感じたからです。
先にコメント消してしまったので一応再コメント
エラーメッセージの全文もお願いします.単にエラーが出るというだけだと対処がしにくいです.
ここにソースコード載せるよりブランチ切ったのをプッシュして,Issueでこんな感じに 781d8e6 コミット番号コメントするのが良いです. Issueじゃなくてコミットへのコメントでリプライを使うのも良いかもね.そこはお好みで.
それとTkinterよりwxPythonの方が使い易い?Tkinterは標準で入っているっていう理由だけで選んだから,何か分かったら教えて欲しいです.
単にPython3で実行していないだけのように見える.u"文字列"
みたいにしなくても"文字列"
でいい.
ダメです。。。前にエラーは出ずに、ちゃんと日本語が表示されたのですが、新しいソースファイルに変えてからか、ダメになりました。
ソースファイルのエンコーディングはUTF-8になってる?
ソースファイルのエンコーディングとはどういうことですか。 最初の#coding: UTF-8 とはまた違いますか
.pyファイル自体の文字エンコーディングの話です.
それの設定の仕方がわからないです。
お使いのテキストエディタの取扱説明書をご覧下さい.としか言えない.
さきほどメモ帳でUTF-8で上書き保存したら成功しました。ありがとうございました。
まだ接続した状態で確認はできないのですが、一応UIはこんな感じになりました。