KCCTdensan / syokudou

食堂利用管理システム
Apache License 2.0
2 stars 0 forks source link

GUIデザイン #4

Open TateIsuKanna opened 6 years ago

TateIsuKanna commented 6 years ago
nekosaburo8250 commented 6 years ago

私に関係ないことかもしれませんが、socketで送るデータは数値ですか。それとも文字列ですか。

TateIsuKanna commented 6 years ago

.sendall()で送るのはbytesオブジェクトです.bytesオブジェクトはunsigned charの配列のような物です. student_idは文字列で,それを.encode()でbytesオブジェクトに変換しています. 整数を送りたいならstructを使ってbytesオブジェクトに変換する必要があります.

nekosaburo8250 commented 6 years ago

ありがとうございます

nekosaburo8250 commented 6 years ago

UTF-8の問題が起こるのですがどうしたらいいでしょうか。

TateIsuKanna commented 6 years ago

再現手順を教えて下さい. また,エラーが出るのであればそのままコピペして下さい.

nekosaburo8250 commented 6 years ago

coding: UTF-8

import wx import socket

string=u""

def onEVT_TEXT_ENTER(evt): try: student_id=textbox.GetValue() if not student_id: return

sock=socket.socket()

    #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)

sizer=wx.FlexGridSizer(cols=2, vgap=1, hgap=5)

sizer.Add(textbox,flag=wx.GROW)

frame.SetSizer(sizer)

app.SetTopWindow(frame) frame.Show(True)

app.MainLoop()

nekosaburo8250 commented 6 years ago

エラーが出るためコメントアウトしました

nekosaburo8250 commented 6 years ago

日本語のところのコメントアウトを外すとエラーになります。

nekosaburo8250 commented 6 years ago

エラーメッセージは以下の通りです SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0x90 in position 0: invalid start byte

wxPythonを選んだ理由は、tkinterは実際のGUIプログラミングではあまり使われてないということと、私自身がwxPythonを使ってみてわかりやすく、便利だと感じたからです。

TateIsuKanna commented 6 years ago

先にコメント消してしまったので一応再コメント

エラーメッセージの全文もお願いします.単にエラーが出るというだけだと対処がしにくいです.

ここにソースコード載せるよりブランチ切ったのをプッシュして,Issueでこんな感じに 781d8e6 コミット番号コメントするのが良いです. Issueじゃなくてコミットへのコメントでリプライを使うのも良いかもね.そこはお好みで.

それとTkinterよりwxPythonの方が使い易い?Tkinterは標準で入っているっていう理由だけで選んだから,何か分かったら教えて欲しいです.

TateIsuKanna commented 6 years ago

単にPython3で実行していないだけのように見える.u"文字列"みたいにしなくても"文字列"でいい.

nekosaburo8250 commented 6 years ago

ダメです。。。前にエラーは出ずに、ちゃんと日本語が表示されたのですが、新しいソースファイルに変えてからか、ダメになりました。

TateIsuKanna commented 6 years ago

ソースファイルのエンコーディングはUTF-8になってる?

nekosaburo8250 commented 6 years ago

ソースファイルのエンコーディングとはどういうことですか。 最初の#coding: UTF-8 とはまた違いますか

TateIsuKanna commented 6 years ago

.pyファイル自体の文字エンコーディングの話です.

nekosaburo8250 commented 6 years ago

それの設定の仕方がわからないです。

TateIsuKanna commented 6 years ago

お使いのテキストエディタの取扱説明書をご覧下さい.としか言えない.

nekosaburo8250 commented 6 years ago

さきほどメモ帳でUTF-8で上書き保存したら成功しました。ありがとうございました。

nekosaburo8250 commented 6 years ago

shokudo01 shokudo02 shokudo03 shokudo04 shokudo05

まだ接続した状態で確認はできないのですが、一応UIはこんな感じになりました。