小编use*_*540的帖子

如何为从sqlalchemy声明基础扩展的类定义元类

我使用: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)

python attributes sqlalchemy metaclass dynamic

8
推荐指数
1
解决办法
2294
查看次数

根据值列表在python中重新排序字典

让我们考虑一个字典:

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)

如何以最简单的方式实现这一目标?

python sorting dictionary list

6
推荐指数
4
解决办法
1万
查看次数

如何在Mac OSX 10.6上卸载wxpython 2.8

在继续进行之前,我的机器和已安装的软件包的一些细节:

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.谁能帮帮我吗?

python macos wxpython uninstall

5
推荐指数
1
解决办法
4641
查看次数

wxMyageBox在wxPython中带有自动关闭计时器

平台: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中执行此操作的任何想法?

python wxpython auto-close

4
推荐指数
1
解决办法
4737
查看次数

使用Python中的装饰器创建动态方法

这很难.我想不仅动态创建方法,还想将装饰器与它们相关联.这是我试过的

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)

python decorator

3
推荐指数
1
解决办法
192
查看次数

wxpython中限制wxListCtrl的大小

我想限制列表控制框的大小。让我们使用以下代码:

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 user-interface wxpython

2
推荐指数
1
解决办法
2608
查看次数