wxPythonで基本的な日付セレクター/カレンダーを作成しようとしています。これまで私は を管理して、必要なウィジェットをすべてグリッドに追加しましたが、私はそれらを得るために苦労しています は正しく配置されました。私は完全に理解していない多くのものがありますが、 特に指定されていないにもかかわらず、大きな境界に囲まれた と思われるwx.SpinCtrlウィジェットでは特に不満を感じています。誰でも これを削除する方法を教えていただけますか?スピンコントロールをフレームの上部から数ピクセルだけ離れたところにある のテキストに置き換えます。テキストの '2月'は、コントロールの下部から同じピクセル数の です。私はすべてのアプローチを試みましたが、どんなものもありませんでした。 は何の効果もありません。wxPython:wx.SpinCtrlボーダー管理
import wx
import calendar
MONTH_NAME_AS_KEY = {"January":1, "February":2, "March":3, "April":4, "May":5, "June":6,
"July":7, "August":8, "September":9, "October":10, "November":11,
"December":12}
def getMonthNumber(nameAsString):
return MONTH_NAME_AS_KEY.get(nameAsString)
class Example(wx.Frame):
def __init__(self, parent, title):
super(Example, self).__init__(parent, title=title,size=(300, 350))
self.InitUI()
self.Centre()
self.Show()
def InitUI(self):
self.panel = wx.Panel(self)
mainSizer = wx.BoxSizer(wx.VERTICAL)
fgs = wx.FlexGridSizer(rows=2, cols=2)
# fgs 1: blank space
filler = wx.StaticText(self.panel, -1, label="")
fgs.Add(filler)
# fgs 2: creating containers
vSizer = wx.BoxSizer(wx.VERTICAL)
yearNavigationBox = wx.BoxSizer(wx.HORIZONTAL)
monthNavigationBox = wx.BoxSizer(wx.HORIZONTAL)
# year navigation
sc = wx.SpinCtrl(self.panel,-1, "", size=(70,70))
sc.SetRange(1980,2060)
sc.SetValue(2011)
yearNavigationBox.Add(sc, wx.ALL, wx.EXPAND|wx.TOP)
# month navigation
monthDown = wx.StaticText(self.panel, -1, label="<")
monthUp = wx.StaticText(self.panel, -1, label=">")
monthName = wx.StaticText(self.panel, wx.ID_ANY, label="February")
monthNavigationBox.Add(monthDown)
monthNavigationBox.Add(monthName)
monthNavigationBox.Add(monthUp)
vSizer.Add(yearNavigationBox)
vSizer.Add(monthNavigationBox)
fgs.Add(vSizer)
# fgs 3: the date of the month writ large
date = wx.StaticText(self.panel, wx.ID_ANY, label='31', style=wx.ALIGN_CENTER)
dateFont = wx.Font(150, wx.DEFAULT, wx.NORMAL, wx.BOLD)
date.SetFont(dateFont)
fgs.Add(date)
# fgs 4: the date grid
dateSquareSizer = wx.GridSizer(rows=6, cols=7, hgap=1, vgap=6)
dayFont = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.BOLD)
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
for item in days:
day = wx.StaticText(self.panel, wx.ID_ANY, label=item)
day.SetFont(dayFont)
dateSquareSizer.Add(day)
y = 2012
m = getMonthNumber(monthName.GetLabel())
gridData = list(calendar.Calendar().itermonthdays(y, m))
while len(gridData)<43: gridData.append(0)
for i in gridData:
if i == 0: i=""
square = wx.StaticText(self.panel, wx.ID_ANY, label=str(i))
square.SetFont(dayFont)
dateSquareSizer.Add(square, wx.ID_ANY)
fgs.Add(dateSquareSizer)
mainSizer.Add(fgs, wx.ALL, 2)
self.panel.SetSizer(mainSizer)
mainSizer.Fit(self)
if __name__ == '__main__':
app = wx.App()
Example(None, title='')
app.MainLoop()
おかげでマイク、これらのチュートリアルを経て、うまくいけば、ウィジェットの位置でわずかに良いグリップを持っています。 –
素晴らしい!私はあなたがそれを把握してうれしいです。 –