def initGame(self):
#font argument (??|??|????|????|???)
self.bgFont = wx.Font(50,wx.SWISS,wx.NORMAL,wx.BOLD,face=u"Roboto")#????
self.scFont = wx.Font(36,wx.SWISS,wx.NORMAL,wx.BOLD,face=u"Roboto")
self.smFont = wx.Font(12,wx.SWISS,wx.NORMAL,wx.NORMAL,face=u"Roboto")
self.curScore = 0 #????
self.bstScore = 0 #????
self.loadScore() #?????????????????
self.data = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] #4x4 ???
#?????????????
count = 0
while count < 2:
row = random.randint(0,len(self.data)-1)
col = random.randint(0,len(self.data[0])-1)
if self.data[row][col] != 0:
continue
self.data[row][col] = 2 if random.randint(0,1) else 4
count += 1
python类SWISS的实例源码
def drawTiles(self,dc):
dc.SetFont(self.scFont)
for row in range(4):
for col in range(4):
value = self.data[row][col]
color = self.colors[value]
if value==2 or value==4:
dc.SetTextForeground((119,110,101))
else:
dc.SetTextForeground((255,255,255))
dc.SetBrush(wx.Brush(color))
dc.SetPen(wx.Pen(color))
dc.DrawRoundedRectangle(30+col*115,165+row*115,100,100,2)
size = dc.GetTextExtent(str(value))
while size[0]>100-15*2:
self.scFont = wx.Font(self.scFont.GetPointSize()*4/5,wx.SWISS,wx.NORMAL,wx.BOLD,face=u"Roboto")
dc.SetFont(self.scFont)
size = dc.GetTextExtent(str(value))
if value!=0: dc.DrawText(str(value),30+col*115+(100-size[0])/2,165+row*115+(100-size[1])/2)
def __init__(self, parent, tip, restricted=True):
"""
Constructor
@param parent: Parent window
@param tip: Tip text (may be multiline)
@param restricted: Tool tip must follow size restriction in line and
characters number defined (default True)
"""
wx.PopupWindow.__init__(self, parent)
self.Restricted = restricted
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
self.SetTip(tip)
# Initialize text font style
self.Font = wx.Font(
faces["size"],
wx.SWISS,
wx.NORMAL,
wx.NORMAL,
faceName=faces["mono"])
self.Bind(wx.EVT_PAINT, self.OnPaint)
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent=parent)
font = wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD, False)
# create and setup first set of widgets
lbl = wx.StaticText(self,
label="Drag some URLS from your browser here:")
lbl.SetFont(font)
self.dropText = wx.TextCtrl(
self, size=(200,200),
style=wx.TE_MULTILINE|wx.HSCROLL|wx.TE_READONLY)
dt = MyURLDropTarget(self.dropText)
self.dropText.SetDropTarget(dt)
firstSizer = self.addWidgetsToSizer([lbl, self.dropText])
# create and setup second set of widgets
lbl = wx.StaticText(self, label="Drag this URL to your browser:")
lbl.SetFont(font)
self.draggableURLText = wx.TextCtrl(self,
value="http://www.mousevspython.com")
self.draggableURLText.Bind(wx.EVT_MOTION, self.OnStartDrag)
secondSizer = self.addWidgetsToSizer([lbl, self.draggableURLText])
# Add sizers to main sizer
mainSizer = wx.BoxSizer(wx.VERTICAL)
mainSizer.Add(firstSizer, 0, wx.EXPAND)
mainSizer.Add(secondSizer, 0, wx.EXPAND)
self.SetSizer(mainSizer)
def __init__(self, parent, label="Close"):
"""Constructor"""
font = wx.Font(16, wx.SWISS, wx.NORMAL, wx.BOLD)
img = wx.Bitmap(r"%s/images/cancel.png" % appPath)
GenBitmapTextButton.__init__(self, parent, wx.ID_CLOSE, img,
label=label, size=(110, 50))
self.SetFont(font)
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, -1, title,
pos=(150, 150), size=(350, 200))
# Create the menubar
menuBar = wx.MenuBar()
# and a menu
menu = wx.Menu()
# add an item to the menu, using \tKeyName automatically
# creates an accelerator, the third param is some help text
# that will show up in the statusbar
menu.Append(wx.ID_EXIT, "E&xit\tAlt-X", "Exit this simple sample")
# bind the menu event to an event handler
self.Bind(wx.EVT_MENU, self.on_time_to_close, id=wx.ID_EXIT)
# and put the menu on the menubar
menuBar.Append(menu, "&File")
self.SetMenuBar(menuBar)
self.CreateStatusBar()
# Now create the Panel to put the other controls on.
panel = wx.Panel(self)
# and a few controls
text = wx.StaticText(panel, -1, "Hello World!")
text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
text.SetSize(text.GetBestSize())
btn = wx.Button(panel, -1, "Close")
funbtn = wx.Button(panel, -1, "Just for fun...")
# bind the button events to handlers
self.Bind(wx.EVT_BUTTON, self.on_time_to_close, btn)
self.Bind(wx.EVT_BUTTON, self.on_fun_button, funbtn)
# Use a sizer to layout the controls, stacked vertically and with
# a 10 pixel border around each
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(text, 0, wx.ALL, 10)
sizer.Add(btn, 0, wx.ALL, 10)
sizer.Add(funbtn, 0, wx.ALL, 10)
panel.SetSizer(sizer)
panel.Layout()
def createWidgets(self):
"""
Create and layout the widgets in the dialog
"""
lblSizer = wx.BoxSizer(wx.VERTICAL)
valueSizer = wx.BoxSizer(wx.VERTICAL)
btnSizer = wx.StdDialogButtonSizer()
colSizer = wx.BoxSizer(wx.HORIZONTAL)
mainSizer = wx.BoxSizer(wx.VERTICAL)
iniFile = "config.ini"
self.config = configobj.ConfigObj(iniFile)
labels = self.config["Labels"]
values = self.config["Values"]
self.widgetNames = values
font = wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD)
for key in labels:
value = labels[key]
lbl = wx.StaticText(self, label=value)
lbl.SetFont(font)
lblSizer.Add(lbl, 0, wx.ALL, 5)
for key in values:
print(key)
value = values[key]
if isinstance(value, list):
default = value[0]
choices = value[1:]
cbo = wx.ComboBox(self, value=value[0],
size=wx.DefaultSize, choices=choices,
style=wx.CB_DROPDOWN|wx.CB_READONLY,
name=key)
valueSizer.Add(cbo, 0, wx.ALL, 5)
else:
txt = wx.TextCtrl(self, value=value, name=key)
valueSizer.Add(txt, 0, wx.ALL|wx.EXPAND, 5)
saveBtn = wx.Button(self, wx.ID_OK, label="Save")
saveBtn.Bind(wx.EVT_BUTTON, self.onSave)
btnSizer.AddButton(saveBtn)
cancelBtn = wx.Button(self, wx.ID_CANCEL)
btnSizer.AddButton(cancelBtn)
btnSizer.Realize()
colSizer.Add(lblSizer)
colSizer.Add(valueSizer, 1, wx.EXPAND)
mainSizer.Add(colSizer, 0, wx.EXPAND)
mainSizer.Add(btnSizer, 0, wx.ALL | wx.ALIGN_RIGHT, 5)
self.SetSizer(mainSizer)
def _init_ctrls(self, prnt):
# generated method, don't edit
wx.Frame.__init__(self, id=wxID_TFRAME, name='TFrame', parent=prnt,
pos=wx.Point(254, 241), size=wx.Size(829, 786),
style=wx.DEFAULT_FRAME_STYLE, title=u'PAWS Terminal')
self._init_utils()
self.SetClientSize(wx.Size(821, 748))
self.SetMenuBar(self.TMenuBar)
self.SetAutoLayout(True)
self.SetToolTipString('TFrame')
self.SetMinSize(wx.Size(-1, 21))
self.TStatusBar = wx.StatusBar(id=wxID_TFRAMETSTATUSBAR,
name='TStatusBar', parent=self, style=0)
self.TStatusBar.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD, False,
u'Courier New'))
self._init_coll_TStatusBar_Fields(self.TStatusBar)
self.SetStatusBar(self.TStatusBar)
self.TInput = wx.TextCtrl(id=wxID_TFRAMETINPUT, name='TInput',
parent=self, pos=wx.Point(1, 728), size=wx.Size(819, 20),
style=wx.SIMPLE_BORDER | wx.TE_PROCESS_ENTER, value="''")
self.TInput.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD, False,
u'Courier'))
self.TInput.SetToolTipString(u'Type command here.')
self.TInput.SetAutoLayout(False)
self.TInput.SetEditable(True)
self.TInput.Enable(False)
self.TInput.Bind(wx.EVT_TEXT_ENTER, self.OnTInputTextEnter,
id=wxID_TFRAMETINPUT)
self.TDisplay = wx.TextCtrl(id=wxID_TFRAMETDISPLAY, name='TDisplay',
parent=self, pos=wx.Point(0, 0), size=wx.Size(821, 728),
style=wx.TE_RICH2 | wx.TE_MULTILINE | wx.TE_READONLY,
value=u'To run a game, choose File ? Pick Game … then choose a game from the list.')
self.TDisplay.SetMinSize(wx.Size(517, 440))
self.TDisplay.SetEditable(False)
self.TDisplay.SetToolTipString(u"Game's output displays here.")
self.TDisplay.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
u'Arial'))
self.TDisplay.Enable(True)
self._init_sizers()