pythonでfoobarのalternativeを作る 10 version 5
:追加された部分
:削除された部分
(差分が大きい場合、文字単位では表示しません)
自分のPCの音楽ファイルをタグでデータベース化 10
https://www.tutorialspoint.com/wxpython/wxpython_listbox_listctrl_class.htm
```
import sys
import wx
players = [('Tendulkar', '15000', '100'), ('Dravid', '14000', '1'),
('Kumble', '1000', '700'), ('KapilDev', '5000', '400'),
('Ganguly', '8000', '50')]
class Mywin(wx.Frame):
def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title)
panel = wx.Panel(self)
box = wx.BoxSizer(wx.HORIZONTAL)
self.list = wx.ListCtrl(panel, -1, style = wx.LC_REPORT)
self.list.InsertColumn(0, 'name', width = 100)
self.list.InsertColumn(1, 'runs', wx.LIST_FORMAT_RIGHT, 100)
self.list.InsertColumn(2, 'wkts', wx.LIST_FORMAT_RIGHT, 100)
for i in players:
index = self.list.InsertStringItem(sys.maxint, i[0])
self.list.SetStringItem(index, 1, i[1])
self.list.SetStringItem(index, 2, i[2])
box.Add(self.list,1,wx.EXPAND)
panel.SetSizer(box)
panel.Fit()
self.Centre()
self.Show(True)
ex = wx.App()
Mywin(None,'ListCtrl Demo')
ex.MainLoop()
```
カラムの設定はわかるけどデータの挿入の仕方がよくわかんない
こっちの方がわかりやすいかな
https://python-minutes.blogspot.com/2017/06/pythongui-listctrl.html
>行の追加はまず
> insertitem
>このときに1列目の値も設定する
>2列目以降の値を設定するときは
> SetItem
>とする
>方法は他にもあるらしい
ここも良いわ
https://bty.sakura.ne.jp/wp/archives/42
以上は削除かな
-------------
190517の開発
- select文の戻り値について、最初の要素しか出力できなかったので書換えた。タプルを一行の文字列にするのって面倒なんだなあ。簡単に書けないんだろうか
今回は文字列にNoneが混じってるのでさらに面倒
```
for l in c.execute(line):
s=''
for ss in l:
if ss==None:
ss='None'
s += ss+'|'
self.m_listBox1.Append(s)
c.close()
conn.close()
```
- そう考えると`print`はすごく使いやすい
で、`print`の出力をそっくり文字列として取得できないか調べた
方法としてはあったけど結構面倒
簡単に出来ないものかね
```
import sys
import io
with io.StringIO() as f: # 文字列IOストリームを初期化して、f に代入
sys.stdout = f # 標準出力を f に切り替える。
for num in range(5): # fに切り替わった標準出力に対してrange(5)の要素を、printで出力
print(num)
text = f.getvalue() # f に出力されたものを文字列として取得
sys.stdout = sys.__stdout__ # 標準出力をデフォルトに戻して text を表示
print("START\n" + text + "END")
```
- でもやっぱりテキストコントロールに区切り文字で出力すると見ずらい
リストを使ったほうがいいよなあ
https://www.tutorialspoint.com/wxpython/wxpython_listbox_listctrl_class.htm
import sys
import wx
players = [('Tendulkar', '15000', '100'), ('Dravid', '14000', '1'),
('Kumble', '1000', '700'), ('KapilDev', '5000', '400'),
('Ganguly', '8000', '50')]
class Mywin(wx.Frame):
def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title)
panel = wx.Panel(self)
box = wx.BoxSizer(wx.HORIZONTAL)
self.list = wx.ListCtrl(panel, -1, style = wx.LC_REPORT)
self.list.InsertColumn(0, 'name', width = 100)
self.list.InsertColumn(1, 'runs', wx.LIST_FORMAT_RIGHT, 100)
self.list.InsertColumn(2, 'wkts', wx.LIST_FORMAT_RIGHT, 100)
for i in players:
index = self.list.InsertStringItem(sys.maxint, i[0])
self.list.SetStringItem(index, 1, i[1])
self.list.SetStringItem(index, 2, i[2])
box.Add(self.list,1,wx.EXPAND)
panel.SetSizer(box)
panel.Fit()
self.Centre()
self.Show(True)
ex = wx.App()
Mywin(None,'ListCtrl Demo')
ex.MainLoop()
カラムの設定はわかるけどデータの挿入の仕方がよくわかんない
こっちの方がわかりやすいかな
https://python-minutes.blogspot.com/2017/06/pythongui-listctrl.html
行の追加はまず
insertitem
このときに1列目の値も設定する
2列目以降の値を設定するときは
SetItem
とする
方法は他にもあるらしい
ここも良いわ
https://bty.sakura.ne.jp/wp/archives/42
以上は削除かな
190517の開発
- select文の戻り値について、最初の要素しか出力できなかったので書換えた。タプルを一行の文字列にするのって面倒なんだなあ。簡単に書けないんだろうか
今回は文字列にNoneが混じってるのでさらに面倒
for l in c.execute(line):
s=''
for ss in l:
if ss==None:
ss='None'
s += ss+'|'
self.m_listBox1.Append(s)
c.close()
conn.close()
- そう考えると
print
はすごく使いやすい
で、print
の出力をそっくり文字列として取得できないか調べた
方法としてはあったけど結構面倒
簡単に出来ないものかね
import sys
import io
with io.StringIO() as f: # 文字列IOストリームを初期化して、f に代入
sys.stdout = f # 標準出力を f に切り替える。
for num in range(5): # fに切り替わった標準出力に対してrange(5)の要素を、printで出力
print(num)
text = f.getvalue() # f に出力されたものを文字列として取得
sys.stdout = sys.__stdout__ # 標準出力をデフォルトに戻して text を表示
print("START\n" + text + "END")
- でもやっぱりテキストコントロールに区切り文字で出力すると見ずらい
リストを使ったほうがいいよなあ