def setFeedFont(self, font=None, refresh=True):
"""Set the feedback font.
Args:
font: A wx.Font object specifying the font for the feedback
message. If None (default) then the font will be set
to a reasonable default.
"""
if font is None:
self.feedFont = self.defaultFeedFont
else:
self.feedFont = font
if refresh:
self.refresh()
python类Font()的实例源码
def _getFont(self, size):
"""Take font size, adjusts if printing and returns wx.Font"""
s = size * self.printerScale * self._fontScale
of = self.GetFont()
# Linux speed up to get font from cache rather than X font server
key = (int(s), of.GetFamily(), of.GetStyle(), of.GetWeight())
font = self._fontCache.get(key, None)
if font:
return font # yeah! cache hit
else:
font = wx.Font(
int(s), of.GetFamily(), of.GetStyle(), of.GetWeight())
self._fontCache[key] = font
return font
def OnPlotDraw3(self, event):
self.resetDefaults()
self.client.SetFont(
wx.Font(10, wx.FONTFAMILY_SCRIPT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
self.client.SetFontSizeAxis(20)
self.client.SetFontSizeLegend(12)
self.client.SetXSpec('min')
self.client.SetYSpec('none')
self.client.Draw(_draw3Objects())
def resetDefaults(self):
"""Just to reset the fonts back to the PlotCanvas defaults"""
self.client.SetFont(
wx.Font(10, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
self.client.SetFontSizeAxis(10)
self.client.SetFontSizeLegend(7)
self.client.setLogScale((False, False))
self.client.SetXSpec('auto')
self.client.SetYSpec('auto')
def __init__(self, parent, name, objectpath, textwidth, file_extension):
def assign(input):
self.objectpath.ChangeValue(input)
def OnBrowse(self):
if IsNotWX4():
dlg = wx.FileDialog(parent, 'Choose a file', os.getcwd(), '', file_extension, wx.OPEN)
else:
dlg = wx.FileDialog(parent, 'Choose a file', os.getcwd(), '', file_extension, wx.FD_OPEN)
if dlg.ShowModal() == wx.ID_OK:
assign(dlg.GetPath())
dlg.Destroy()
def OnEdit(event):
self.objectpath.ChangeValue(event.GetString())
fontpointsize=wx.SystemSettings.GetFont(wx.SYS_SYSTEM_FONT).GetPointSize()
self.font = wx.Font(fontpointsize, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
dc = wx.ScreenDC()
dc.SetFont(self.font)
textw,texth = dc.GetTextExtent(name)
if textw > textwidth:
labelw = textw
else:
labelw = textwidth
wx.BoxSizer.__init__(self, wx.HORIZONTAL)
self.label = StaticTextNew(parent, -1, name, style =wx.ALIGN_RIGHT, size=(labelw,-1) )
self.label.SetFont(self.font)
self.Add( self.label, 0, wx.CENTER )
self.objectpath = TextCtrlNew(parent, -1)
self.objectpath.SetFont(self.font)
self.objectpath.SetValue(objectpath)
self.objectpath.SetToolTipNew("Browse for file or type "+os.linesep+"path and name")
self.objectpath.Bind(wx.EVT_TEXT_ENTER, OnEdit)
self.Add( self.objectpath, 1, wx.CENTER |wx.EXPAND )
self.button = ButtonNew(parent, -1, "Browse")
self.button.SetFont(self.font)
self.button.SetToolTipNew("Browse for file or type "+os.linesep+"path and name")
self.button.Bind(wx.EVT_BUTTON, OnBrowse)
self.Add( self.button, 0, wx.LEFT|wx.CENTER)
def __init__(self, parent, title):
self.dirname=os.getcwd()
wx.Frame.__init__(self, parent, title=title, size=(1000,700))
self.SetSizeHints(1000,700,-1,-1)
self.CreateStatusBar()
filemenu= wx.Menu()
menuOpen = filemenu.Append(wx.ID_OPEN, "&Open"," Open saved state")
menuSave = filemenu.Append(wx.ID_SAVE, "&Save"," Save current state")
filemenu.InsertSeparator(2)
menuNew = filemenu.Append(wx.ID_NEW, "&New"," Create new session")
filemenu.InsertSeparator(4)
menuExit = filemenu.Append(wx.ID_EXIT,"E&xit"," Terminate the program")
viewmenu = wx.Menu()
vismenu = wx.Menu()
self.viewmenuundock = vismenu.Append(wx.ID_ANY,"&Undock","Undock the visualisation")
self.viewmenuundock.Enable(0)
self.viewmenudock = vismenu.Append(wx.ID_ANY,"&Dock","Dock the visualisation")
self.viewmenudock.Enable(0)
self.Bind(wx.EVT_MENU, self.OnUndock, self.viewmenuundock)
self.Bind(wx.EVT_MENU, self.OnDock, self.viewmenudock)
if IsNotWX4():
viewmenu.AppendMenu(wx.ID_ANY,"&Visualisation", vismenu)
else:
viewmenu.Append(wx.ID_ANY,"&Visualisation", vismenu)
self.visualdialog_docked = True
editmenu = wx.Menu()
self.menuCWD = editmenu.Append(wx.ID_ANY, "Current Working &Directory","Current Working Directory")
self.Bind(wx.EVT_MENU, self.OnCWD, self.menuCWD)
helpmenu= wx.Menu()
menuAbout= helpmenu.Append(wx.ID_ABOUT, "&About"," Information about Bonsu")
menuDoc= helpmenu.Append(wx.ID_HELP, "&Contents","Documentation")
menuBar = wx.MenuBar()
menuBar.Append(filemenu,"&File")
menuBar.Append(viewmenu,"&View")
menuBar.Append(editmenu,"&Edit")
menuBar.Append(helpmenu,"&Help")
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.OnOpen, menuOpen)
self.Bind(wx.EVT_MENU, self.OnSave, menuSave)
self.Bind(wx.EVT_MENU, self.OnNew, menuNew)
self.Bind(wx.EVT_MENU, self.OnExit, menuExit)
self.Bind(wx.EVT_MENU, self.OnAbout, menuAbout)
self.Bind(wx.EVT_MENU, self.OnHelp, menuDoc)
self.Bind(wx.EVT_CLOSE, self.OnExit)
self.fontpointsize=wx.SystemSettings.GetFont(wx.SYS_SYSTEM_FONT).GetPointSize()
self.font = wx.Font(self.fontpointsize, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
self.SetFont(self.font)
icon = wx.Icon(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'image', 'bonsu.ico'), wx.BITMAP_TYPE_ICO)
wx.Frame.SetIcon(self, icon)
self.nb = None
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.Fit()
self.Layout()
self.Show()
def show_on_answer_panel(self, content2show):
text = wx.StaticText(parent=self.answer_panel, label=content2show)
text.SetFont(wx.Font(pointSize=self.answer_panel_width_ / 10, family=wx.ROMAN, style=wx.NORMAL, weight=wx.BOLD))
self.answers_box.Add(item=text, proportion=CAN_NOT_CHANGE, border=5)
def SetPreviewFont(self, font):
"""
Set font of Preview panel
@param font: wx.Font object containing font style
"""
self.Preview.SetFont(font)
def RefreshView(self):
width, height = self.MessagePanel.GetClientSize()
bitmap = wx.EmptyBitmap(width, height)
dc = wx.BufferedDC(wx.ClientDC(self.MessagePanel), bitmap)
dc.Clear()
dc.BeginDrawing()
if self.CurrentMessage is not None:
dc.SetFont(self.Font)
for button in self.LeftButtons + self.RightButtons:
button.Draw(dc)
message_idx = self.CurrentMessage
message = self.LogMessages[message_idx]
draw_date = True
offset = 5
while offset < height and message is not None:
message.Draw(dc, offset, width, draw_date)
offset += message.GetHeight(draw_date)
previous_message, message_idx = self.GetPreviousMessage(message_idx)
if previous_message is not None:
draw_date = message.Date != previous_message.Date
message = previous_message
dc.EndDrawing()
self.MessageScrollBar.RefreshThumbPosition()
def OnMessageToolTipTimer(self, event):
if self.LastMousePos is not None:
message = self.GetMessageByScreenPos(*self.LastMousePos)
if message is not None:
tooltip_pos = self.MessagePanel.ClientToScreen(self.LastMousePos)
tooltip_pos.x += 10
tooltip_pos.y += 10
self.MessageToolTip = CustomToolTip(self.MessagePanel, message.GetFullText(), False)
self.MessageToolTip.SetFont(self.Font)
self.MessageToolTip.SetToolTipPosition(tooltip_pos)
self.MessageToolTip.Show()
event.Skip()
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 OnPaint(self, event):
"""
Callback for Paint Event
@param event: Paint event
"""
# Get buffered paint DC for tool tip
dc = wx.AutoBufferedPaintDC(self)
dc.Clear()
# Set DC drawing style
dc.SetPen(wx.BLACK_PEN)
dc.SetBrush(wx.Brush(wx.Colour(255, 238, 170)))
dc.SetFont(self.Font)
# Draw Tool tip
dc.BeginDrawing()
tip_width, tip_height = self.GetToolTipSize()
# Draw background rectangle
dc.DrawRectangle(0, 0, tip_width, tip_height)
# Draw tool tip text
line_offset = 0
for line in self.Tip:
dc.DrawText(line, 2, line_offset + 2)
line_width, line_height = dc.GetTextExtent(line)
line_offset += line_height
dc.EndDrawing()
event.Skip()
def GenerateMethodButtonSizer(self):
normal_bt_font = wx.Font(faces["size"] / 3, wx.DEFAULT, wx.NORMAL, wx.NORMAL, faceName=faces["helv"])
mouseover_bt_font = wx.Font(faces["size"] / 3, wx.DEFAULT, wx.NORMAL, wx.NORMAL, faceName=faces["helv"], underline=True)
msizer = wx.BoxSizer(wx.HORIZONTAL)
for confnode_method in self.Controler.ConfNodeMethods:
if "method" in confnode_method and confnode_method.get("shown", True):
button = GenBitmapTextButton(self.Editor,
bitmap=GetBitmap(confnode_method.get("bitmap", "Unknown")),
label=confnode_method["name"],
style=wx.NO_BORDER)
button.SetFont(normal_bt_font)
button.SetToolTipString(confnode_method["tooltip"])
if confnode_method.get("push", False):
button.Bind(wx.EVT_LEFT_DOWN, self.GetButtonCallBackFunction(confnode_method["method"], True))
else:
button.Bind(wx.EVT_BUTTON, self.GetButtonCallBackFunction(confnode_method["method"]), button)
# a fancy underline on mouseover
def setFontStyle(b, s):
def fn(event):
b.SetFont(s)
b.Refresh()
event.Skip()
return fn
button.Bind(wx.EVT_ENTER_WINDOW, setFontStyle(button, mouseover_bt_font))
button.Bind(wx.EVT_LEAVE_WINDOW, setFontStyle(button, normal_bt_font))
# hack to force size to mini
if not confnode_method.get("enabled", True):
button.Disable()
msizer.AddWindow(button, flag=wx.ALIGN_CENTER)
return msizer
def draw_coord(self, dc, w, h, l, t, r, b):
xs = [5, 10, 20, 40, 50, 100, 200, 400, 500, 1000, 2000, 4000, 10000]
n, dx, dy = len(self.data), 0, 0
left, low, right, high = self.extent
for i in xs[::-1]:
if (right-left)*1.0/i<=10:dx=i
for i in xs[::-1]:
if (high-low)*1.0/i<=10:dy=i
dc.SetPen(wx.Pen((0, 0, 0), width=1, style=wx.SOLID))
dc.DrawRectangle(l, t, w+1, h+1)
dc.SetPen(wx.Pen((100, 100, 100), width=1, style=wx.SOLID))
for i in range(int(ceil(left*1.0/dx)*dx), int(right)+1, dx):
x = l+(i-left)*1.0/(right-left)*w
dc.DrawLine(x, t, x, t+h)
dc.DrawText(str(i), x-5, t+h)
for i in range(int(ceil(low*1.0/dy)*dy), int(high)+1, dy):
y = h+t-(i-low)*1.0/(high-low)*h
dc.DrawLine(l, y, l+w, y)
dc.DrawText(str(i), 5, y-5)
titlefont = wx.Font(18, wx.FONTFAMILY_DEFAULT,
wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)
dc.SetFont(titlefont)
dw,dh = dc.GetTextExtent(self.title)
dc.DrawText(self.title, l+w/2-dw/2, 3)
lablelfont = wx.Font(14, wx.FONTFAMILY_DEFAULT,
wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)
dc.SetFont(lablelfont)
dw,dh = dc.GetTextExtent(self.labelx)
dc.DrawText(self.labelx, l+w-dw, t+h+15)
dc.DrawText(self.labely, 5, 10)
def draw(self, dc, f, **key):
dc.SetPen(wx.Pen((255,255,0), width=3, style=wx.SOLID))
dc.SetTextForeground((255,255,0))
font = wx.Font(8, wx.FONTFAMILY_DEFAULT,
wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)
dc.SetFont(font)
ids = self.graph.nodes()
pts = [self.graph.node[i]['o'] for i in ids]
pts = [f(i[1], i[0]) for i in pts]
dc.DrawPointList(pts)
dc.DrawTextList([str(i) for i in ids], pts)
def draw(self, dc, f, **key):
dc.SetPen(wx.Pen(Setting['color'], width=1, style=wx.SOLID))
dc.SetTextForeground(Setting['tcolor'])
font = wx.Font(10, wx.FONTFAMILY_DEFAULT,
wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)
dc.SetFont(font)
for i in self.body:
x,y = f(*i)
unit = 1 if self.unit is None else self.unit[0]
dc.DrawCircle(x, y, 2)
dc.DrawText('(%.1f,%.1f)'%(i[0]*unit, i[1]*unit), x, y)
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,
"File and Folder Dialogs Tutorial")
global panel
panel = wx.Panel(self, wx.ID_ANY)
self.currentDirectory = os.getcwd()
# create the buttons and bindings
dirDlgBtn1 = wx.Button(panel, label="Choose Source")
dirDlgBtn1.Bind(wx.EVT_BUTTON, self.onDir1)
dirDlgBtn2 = wx.Button(panel, label="Choose Destination")
dirDlgBtn2.Bind(wx.EVT_BUTTON, self.onDir2)
moveBtn=wx.Button(panel, label="Check and Move Files")
moveBtn.Bind(wx.EVT_BUTTON, self.moveUFiles)
#moveBtn.Bind(wx.EVT_BUTTON, panel.Update)
#SQLite
conn = sqlite3.connect('checkTimes.db')
conn.execute('CREATE TABLE if not exists \
Checks(ID INTEGER PRIMARY KEY AUTOINCREMENT, \
checkTime DATETIME)')
cursor = conn.execute("SELECT checkTime from Checks \
where oid = (SELECT max(oid) from Checks)")
rows = cursor.fetchall()
conn.commit()
#Show Last Time Checked
timestr=str(rows).replace("[(u'", '').replace("',)]", '')
TextA=wx.StaticText(panel, -1, 'Last checked: '+timestr, (100, 175))
TextA.SetForegroundColour('Navy')
font = wx.Font(8, wx.DECORATIVE, wx.NORMAL, wx.NORMAL)
#TextA.SetFont(font)
# put the buttons in a sizer
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(dirDlgBtn1, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(dirDlgBtn2, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(moveBtn, 0, wx.ALL|wx.CENTER, 5)
panel.SetSizer(sizer)
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,
"File and Folder Dialogs Tutorial")
global panel
panel = wx.Panel(self, wx.ID_ANY)
self.currentDirectory = os.getcwd()
# create the buttons and bindings
dirDlgBtn1 = wx.Button(panel, label="Choose Source")
dirDlgBtn1.Bind(wx.EVT_BUTTON, self.onDir1)
dirDlgBtn2 = wx.Button(panel, label="Choose Destination")
dirDlgBtn2.Bind(wx.EVT_BUTTON, self.onDir2)
moveBtn=wx.Button(panel, label="Check and Move Files")
moveBtn.Bind(wx.EVT_BUTTON, self.moveUFiles)
#moveBtn.Bind(wx.EVT_BUTTON, panel.Update)
#SQLite
conn = sqlite3.connect('checkTimes.db')
conn.execute('CREATE TABLE if not exists \
Checks(ID INTEGER PRIMARY KEY AUTOINCREMENT, \
checkTime DATETIME)')
cursor = conn.execute("SELECT checkTime from Checks \
where oid = (SELECT max(oid) from Checks)")
rows = cursor.fetchall()
conn.commit()
#Show Last Time Checked
timestr=str(rows).replace("[(u'", '').replace("',)]", '')
TextA=wx.StaticText(panel, -1, 'Last checked: '+timestr, (100, 175))
TextA.SetForegroundColour('Navy')
font = wx.Font(8, wx.DECORATIVE, wx.NORMAL, wx.NORMAL)
#TextA.SetFont(font)
# put the buttons in a sizer
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(dirDlgBtn1, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(dirDlgBtn2, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(moveBtn, 0, wx.ALL|wx.CENTER, 5)
panel.SetSizer(sizer)
def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle("Smart School")
self.SetSize((450, 350))
self.label_1.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
self.combo_box_1.SetSelection(0)
self.label_2.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
self.combo_box_2.SetSelection(0)
self.label_3.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
self.combo_box_3.SetSelection(0)
self.label_4.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
self.combo_box_4.SetSelection(0)
# end wxGlade
def __set_properties(self):
# begin wxGlade: working_days.__set_properties
self.SetTitle("working_days")
self.SetSize((320, 350))
self.label_1.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
self.combo_box_1.SetMinSize((150, 29))
self.label_5.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
self.text_ctrl_1.SetMinSize((75, 33))
self.text_ctrl_2.SetMinSize((75, 33))
self.text_ctrl_3.SetMinSize((75, 33))
self.button_1.SetMinSize((80, 33))
self.button_2.SetMinSize((80, 33))
# end wxGlade