我使用:Python 2.6和sqlalchemy 0.6.1
这就是我想要做的:
from sqlalchemy.types import (
Integer,
String,
Boolean
)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class SampleMeta(type):
def __new__(cls, name, bases, attrs):
attrs.update({ 'id': Column('Id', Integer, primary_key=True),
'name': Column('Name', String),
'description': Column('Description', String),
'is_active': Column('IsActive', Boolean)
})
return super(SampleMeta, cls).__new__(cls, name, bases, attrs)
class Sample(Base):
__tablename__ = 'Sample'
__table_args__ = {'useexisting': True}
__metaclass__ = SampleMeta
def __init__(self, id, name, description, is_active):
self.id = id
self.name = name
self.description = description
self.is_active = is_active
def __repr__(self):
return …Run Code Online (Sandbox Code Playgroud) 让我们考虑一个字典:
sample_dict={1:'r099',2:'g444',3:'t555',4:'f444',5:'h666'}
Run Code Online (Sandbox Code Playgroud)
我想按包含我想要的字典键顺序的列表指定的顺序对该字典重新排序。让我们说所需的订单清单是:
desired_order_list=[5,2,4,3,1]
Run Code Online (Sandbox Code Playgroud)
因此,我希望我的字典显示如下:
{5:'h666',2:'g444',4:'f444',3:'t555',1:'r099'}
Run Code Online (Sandbox Code Playgroud)
如果我可以得到一个很好的值列表。意思是,结果可能是这样的:
['h666','g444','f444','t555','r099']
Run Code Online (Sandbox Code Playgroud)
如何以最简单的方式实现这一目标?
在继续进行之前,我的机器和已安装的软件包的一些细节:
Mac OSX版本:10.6.6 Python版本:Activestate Python 2.7.1 wxpython版本:wxpython 2.8(使用Carbon API因此仅限于32位模式拱门)
我使用他们的.dmg安装程序文件从wxpython网站安装了wxPython2.8-osx-unicode-py2.7.该软件包使用Carbon API,因此仅限于32位模式.我必须使用"arch -i386"编写我的应用程序才能导入wx,由于这个限制,我无法导入某些其他软件包,如"MySQLdb",这些软件包在32位模式下不可用.因此,我最好的选择是卸载wxpython 2.8并安装wxpython 2.9,因为版本2.9使用的Cocoa API同时支持32位和64位.
我不知道如何在我的Mac OSX上卸载wxpython2.8.谁能帮帮我吗?
平台:Windows,OS X.
Python版本:Active State Python 2.7
wxPython版本:2.9版
这是我使用wxMessageBox的示例代码:
import wx,os
class Frame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(100, 100),style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN)
host=os.system('hostname')
if host!='superman':
self.dialogBox=wx.MessageBox('The host name should be superman. Closing this dialog box in 2s...','Info')
self.Destroy()
else:
self.Center()
self.Show()
if __name__ == '__main__':
app = wx.App(redirect=False)
frame = Frame(None, -1, 'Sample')
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)
根据上面的代码,如果主机名不是"超人",则会在用户显示一个消息框并提示按"确定".如果用户按下消息框上的"确定"按钮,则控制移动到代码中的下一行(即行号10),其中帧被销毁.我希望能够自动关闭对话框并转到代码中的下一行,即self.Destroy()如果用户在接下来的2秒内未按下"确定"按钮.有关如何在wxpython中执行此操作的任何想法?
这很难.我想不仅动态创建方法,还想将装饰器与它们相关联.这是我试过的
import inspect
import types
class Dynamo(object):
pass
def call_me_dec(func):
print 'I am here'
return func
def add_dynamo(cls,i):
# @call_me_dec
def innerdynamo(self):
print "in dynamo %d" % i
return i
innerdynamo.__doc__ = "docstring for dynamo%d" % i
innerdynamo.__name__ = "dynamo%d" % i
setattr(cls, innerdynamo.__name__, innerdynamo)
def add_decorators(cls):
for name, fn in inspect.getmembers(cls):
if isinstance(fn, types.UnboundMethodType):
setattr(cls, name, call_me_dec(fn))
for i in range(2):
add_dynamo(Dynamo, i)
add_decorators(Dynamo)
d=Dynamo()
d.dynamo0()
d.dynamo1()
Run Code Online (Sandbox Code Playgroud)
输出是:
I am here
I am here
in dynamo 0
in dynamo …Run Code Online (Sandbox Code Playgroud) 我想限制列表控制框的大小。让我们使用以下代码:
import wx
class Students(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(380, 230))
hbox = wx.BoxSizer(wx.HORIZONTAL)
panel = wx.Panel(self, -1)
self.list = wx.ListCtrl(panel, -1, style=wx.LC_REPORT)
self.list.InsertColumn(0, 'name')
self.list.InsertColumn(1, 'age')
hbox.Add(self.list, 1,wx.EXPAND)
panel.SetSizer(hbox)
self.Centre()
self.Show(True)
app = wx.App()
Students(None, -1, 'studs')
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)
如果我将水平框大小器的比例设置为 0,如下所示:
hbox.Add(self.list, 0,wx.EXPAND)
Run Code Online (Sandbox Code Playgroud)
那么有一个不同的问题。比例= 1 的问题是在“年龄”列之后,列表控制框有很多空白空间用于第三列不存在的列。ratio=0 的问题是它的宽度太短了。我只想显示带有“名称”和“年龄”列的列表控制框并保存其余空间。我怎么做?
python ×6
wxpython ×3
attributes ×1
auto-close ×1
decorator ×1
dictionary ×1
dynamic ×1
list ×1
macos ×1
metaclass ×1
sorting ×1
sqlalchemy ×1
uninstall ×1