小编dre*_*iya的帖子

PyQt - 实现QAbstractTableModel以在QTableView中显示

我想在PyQt表中显示一个pandas数据帧.我已经取得了一些进展,但是无法正确派生Table Model类.任何有关这方面的帮助将非常感激.

**注意这里的完整示例代码**

我正在努力生成一个有效的QtCore.QAbstractTableModel派生类.继上一个关于QItemDelegates的问题后,我试图从Pandas DataFrame生成一个表模型来插入实际数据.我在这里有一些示例代码,但如果我在Widget类(ln 152)中用TableModel2替换我的TableModel,我就无法显示该表.

class TableModel2(QtCore.QAbstractTableModel): 
    def __init__(self, parent=None, *args): 
        super(TableModel2, self).__init__()
        #QtCore.QAbstractTableModel.__init__(self, parent, *args)
        self.datatable = None
        self.headerdata = None
        self.dataFrame = None
        self.model = QtGui.QStandardItemModel(self)

    def update(self, dataIn):
        print 'Updating Model'
        self.datatable = dataIn
        print 'Datatable : {0}'.format(self.datatable)
        headers = dataIn.columns.values
        header_items = [
                    str(field)
                    for field in headers
        ]
        self.headerdata = header_items
        print 'Headers'
        print self.headerdata

        for i in range(len(dataIn.index.values)):
            for j in range(len(dataIn.columns.values)):
                #self.datatable.setItem(i,j,QtGui.QTableWidgetItem(str(df.iget_value(i, j))))
                self.model.setItem(i,j,QtGui.QStandardItem(str(dataIn.iget_value(i, j))))

    def rowCount(self, parent=QtCore.QModelIndex()): …
Run Code Online (Sandbox Code Playgroud)

python qt qt4 pyqt

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

PyQt - QTableView中的复选框列

我正在从Pandas数据帧动态创建QTableView.我这里有示例代码.

我可以使用复选框创建表格,但是我无法获得反映模型数据的复选框,甚至根本无法更改为取消选中.

我正在关注上一个问题的示例代码,并以@raorao答案为指导.这将显示表格中的框,但不起作用.

任何人都可以建议任何更改,或者此代码有什么问题.为什么它不反映模型,为什么它不会改变?

请查看我的完整示例代码.

编辑一:Frodon评论后更新:更正了字符串强制转换为bool并进行比较xxx =='True'

class CheckBoxDelegate(QtGui.QStyledItemDelegate):
    """
    A delegate that places a fully functioning QCheckBox in every
    cell of the column to which it's applied
    """
    def __init__(self, parent):
        QtGui.QItemDelegate.__init__(self, parent)

    def createEditor(self, parent, option, index):
        '''
        Important, otherwise an editor is created if the user clicks in this cell.
        ** Need to hook up a signal to the model
        '''
        return None

    def paint(self, painter, option, index):
        '''
        Paint …
Run Code Online (Sandbox Code Playgroud)

python pyqt python-2.7 pandas

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

Python按元组中的值的长度对List进行排序

我在排序元组列表时遇到了困难.我想按列表中的字符串长度排序.

例如:

l = [(99,'bbc', 121),(33,'abcd', 231),(44,'zb', 148), (23,'abcde',221)]
Run Code Online (Sandbox Code Playgroud)

如果我按元素1排序:

l.sort(key=itemgetter(1), reverse=True)
Run Code Online (Sandbox Code Playgroud)

这将按字母顺序排列字符串,而不是长度.我更喜欢就地排序和反向排序,首先使用最长的字符串.

我可以使用lambda和cmp,

l.sort(lambda x,y: cmp(len(x[1]), len(y[1])), reverse=True)
Run Code Online (Sandbox Code Playgroud)

但使用键和/或项目符号是否有更优雅或pythonic的方式?

python sorting tuples

11
推荐指数
1
解决办法
4926
查看次数

PyQt - 如何使用QItemDelegate在表视图中设置QComboBox

我试图在我的表中显示一个组合框,以便我可以从表模型中设置所选索引,就像表中的其他单元格一样.我已经从其他示例拼凑了这些,但仍然无法理解交互如何工作来设置QComboBox的选定索引.

这是我能用来证明问题的最简单的例子.如果有人能演示如何从模型数据中自动设置索引?另外如何使用'currentIndexChanged'信号,因为这似乎在重新绘制时几乎连续不断?谢谢.

# The following tells SIP (the system that binds Qt's C++ to Python)
# to return Python native types rather than QString and QVariant
import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)


from PyQt4 import QtCore, QtGui

class TableModel(QtCore.QAbstractTableModel):
    """
    A simple 5x4 table model to demonstrate the delegates
    """
    def rowCount(self, parent=QtCore.QModelIndex()): return 5
    def columnCount(self, parent=QtCore.QModelIndex()): return 4

    def data(self, index, role=QtCore.Qt.DisplayRole):
        if not index.isValid(): return None
        if not role==QtCore.Qt.DisplayRole: return None
        return "{0:02d}".format(index.row())


class ComboDelegate(QtGui.QItemDelegate):
    """
    A …
Run Code Online (Sandbox Code Playgroud)

python qt pyqt

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

使用Linq将原生C#数组乘以一个因子

我有兴趣使用Linq将数组乘以一个因子.

我目前的代码是:

public static double[] multiply(double[] x, double factor)
{
    if (x == null) throw new ArgumentNullException();
    double[] result = new double[x.Length];
    for (int i = 0; i < x.Length; i++)
    {
        result[i] = x[i] * factor;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

在Linq中执行此操作的最有效方法是什么,它会提供更好的性能吗?

c# linq

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

如何在bloomberg获得实时价格快照?

我希望通过C#获得Bloomberg .Net API 3的实时价格快照.

我可以从样本中看到如何获取历史价格或订阅数据,但我找不到获得订单快照的正确请求,即买/卖/最后交易价格和数量.

对于盘中蜱我会做这样的事情:

Service refDataService = d_session.GetService("//blp/refdata");
// create intraday tick request
Request request = refDataService.CreateRequest("IntradayTickRequest");
// set request parameters
request.Set("includeConditionCodes", checkBoxIncludeConditionCode.Checked);
request.Set("includeExchangeCodes", checkBoxIncludeExchangeCode.Checked);
Element eventTypes = request.GetElement("eventTypes");
eventTypes.AppendValue("TRADE");
eventTypes.AppendValue("BID");
eventTypes.AppendValue("ASK");
request.Set("security", d_requestSecurity);
request.Set("startDateTime", new BDateTime(startDate.Year, startDate.Month,
             startDate.Day,startDate.Hour, startDate.Minute, startDate.Second, 0));
request.Set("endDateTime", new BDateTime(endDate.Year, endDate.Month, endDate.Day,
             endDate.Hour, endDate.Minute, endDate.Second, 0));
Run Code Online (Sandbox Code Playgroud)

是否有不同的实时快照请求?

c# api bloomberg

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

在C#中打破依赖关系的最佳方法?

我们正在考虑将单元测试添加到我们的C#代码库中.我发现将单元测试添加到简单类很容易,但与其他依赖项交互的类更难.我一直在研究模拟框架,但是想知道最好的方法是首先编写类来打破外部依赖,比如文件系统,数据库和消息系统依赖.

举一个例子,例程在套接字上侦听某种格式的消息 - 比如MessageA.这被解码,一些计算完成,这被重新编码成不同的二进制格式,然后发送结果消息,MessageB.

我目前的测试方法如下.我为所有套接字交互提取一个接口,并创建一个模拟接口.我将接口设置为单例.然后针对硬编码输入运行该类.被测试的类将使用单例中的接口来发送/接收.

我做了类似的事情来测试数据库交互.

这似乎不是最灵活的方法,你会如何改进它以使其更容易测试?如果一个模拟框架是答案,我将如何设计类?

示例代码:

[SetUp]
public void init()
{
    // set message interface in singleton as mock interface
    CommAdapter.Instance.MessageAdapter = new MockMessage();

    // build reference message from hard coded test variables
    initialiseMessageA();

    // set input from mock message socket
    ((MockMessage) CommAdapter.Instance.MessageAdapter).MessageIn = m_messageA;
}

[Test]
public void test_listenMessage_validOutput()
{
    // initialise test class
    MessageSocket tS = new MessageSocket();

    // read from socket
    tS.listenMessage();

    // extract mock interface from singleton
    MockMessage mm = ((MockMessage) CommAdapter.Instance.MessageAdapter);

    // assert …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing dependency-injection mocking

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