小编Ben*_*min的帖子

有哪些可用的Python模块可以保存和加载数据?

StackOverflow上有许多分散的帖子,关于用于保存和加载数据的Python模块.

我自己熟悉jsonpickle,我也听说过pytables.那里可能还有更多.此外,每个模块似乎都符合某种目的,并且有自己的限制(例如,如果工作的话,加载一个带有泡菜的大型列表或字典需要很长时间).因此,对可能性进行适当的概述会很好.

然后,您可以帮助提供用于保存和加载数据的全面模块列表,描述每个模块:

  • 这个模块的一般用途是什么,
  • 它的极限,
  • 你为什么选择这个模块呢?

python data-storage python-module data-persistence

7
推荐指数
1
解决办法
691
查看次数

如何使用 python-xlib 管理我的应用程序窗口?

我想找到一种 linux-wide(就它使用 X11 而言)的方式来控制我使用 Python 编程的应用程序的窗口几何形状。我所有的研究都指向使用python-xlib,这恰好是非常糟糕的记录。

我想实现的是:

  • 定义窗口在屏幕上的位置
  • 定义最小和最大尺寸
  • 启用/禁用窗口大小调整
  • 为窗口保留屏幕空间
  • 保持窗口上方/下方
  • 跳过与否任务栏(又名窗口列表)
  • 设置窗口装饰/未装饰
  • 设置窗口标志(正常、弹出、对话、飞溅、停靠、忽略)

注意:我不想用 Xlib 创建,而是想告诉 X 如何处理我用一些 GUI 库(例如 PyQt)创建的窗口。

我该怎么做呢?我意识到这个问题是一个很大的问题:你至少有关于我如何抓住我的窗户的提示吗?我可以在模块中的哪个位置找到我的答案?

编辑: nm 的回答提供了很好的资源,Unix StackExchange 上还有另一个问答,它提供了一个很好的例子,说明如何控制 X 显示的应用程序窗口。

python linux x11 window xlib

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

删除所有DockWidgets后如何调整QMainWindow的大小?

我正在尝试创建一个由a组成的应用程序QMainWindow,其中央部件是一个QToolBar(它可能不常见,但出于我的目的,工具栏非常适合).码头只允许在下面.我加了QDockWidget它,并且QActionQToolBar切换的QDockWidget打开和关闭与removeDockWidget()restoreDockWidget().

默认大小QMainWindow为800 x 24,QToolBars maximumHeight也设置为24.在之后removeDockWidget()被调用时,QMainWindow的几何图形设置回(0,0,800,24)setGeometry().

我想要实现的是在移除QMainWindow时将高度调整为24 DockWidget.在setGeometry()似乎因为宽度和位置的变化相应的工作,但有趣的是,高度不让步.那真的是我的问题:)

你觉得怎么回事?

这是一个屏幕演示,说明了手头的问题.

注意:如果我使用QWidget而不是QMainWindow创建相同的场景,并在子窗口小部件上使用show()hide(),那么我可以adjustSize()毫无问题地调整父级的大小:上面的问题似乎是QMainWindow特定的.

python qt4 pyqt qdockwidget qmainwindow

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

如何旋转QPushButton?

我希望---用Python和Qt4 ---来旋转QPushButton(或至少它的文本),这样它就可以垂直站立.我在网上看过一些文档,但是我无法理解它 - 它在C语言中,我是C语言文盲.

根据我的阅读,我们需要重新实现paintEvent()处理程序,实例化并旋转QPainter().然而,我无法弄清楚如何为我只需要的一个QString或QPushButton做这个.我假设QPaintEvent会有一个"发送者"属性,就像信号一样,但它没有.我似乎可以从这个事件得到的是QRect或QRegion.

如何查找特定于我的按钮或其标签的事件?
或者,因为那是真正的问题,如何旋转QPushButton?

Mru,下面提出了一些C++示例,它完全重新实现了QPushButton.由于我对C++没有任何线索,因为我不需要完全重新实现,所以我试图painEvent()在Python中重新实现处理程序,基于该示例.

这是我翻译的内容,但它不起作用:\

#!/usr/bin/env python


from PyQt4 import QtGui, QtCore
import sys



class RotatedButton(QtGui.QPushButton):
    def __init__(self, text, parent, orientation = "west"):
        QtGui.QPushButton.__init__(self, text, parent)
        self.orientation = orientation

    def paintEvent(self, event):
        painter = QtGui.QStylePainter(self)
        if self.orientation == 'west':
            painter.rotate(90)
        elif self.orientation == 'east':
            painter.rotate(270)
        else:
            raise TypeError
        painter.drawControl(QtGui.QStyle.CE_PushButton, self.getSyleOptions())


    def getSyleOptions(self):

        options = QtGui.QStyleOptionButton()
        options.initFrom(self)        
        size = options.rect.size()
        size.transpose()
        options.rect.setSize(size)
        options.features = QtGui.QStyleOptionButton.None …
Run Code Online (Sandbox Code Playgroud)

python user-interface pyqt4 qpainter

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

Python:在函数中将方法作为参数传递

我看过很多帖子,但没有一个真正解决我的问题.使用Python,我试图在一个需要两个参数的函数中将方法作为参数传递:

# this is a method within myObject
def getAccount(self):
    account = (self.__username, self.__password)
    return account
# this is a function from a self-made, imported myModule
def logIn(username,password):
    # log into account
    return someData
# run the function from within the myObject instance
myData = myModule.logIn(myObject.getAccount())
Run Code Online (Sandbox Code Playgroud)

但是后来Python不高兴:它想要logIn()函数的两个参数.很公平.如果认为问题是getAccount()方法返回了一个元组,它是一个对象.我试过了:

def getAccount(self):
    return self.__username, self.__password
Run Code Online (Sandbox Code Playgroud)

但这要么没有任何区别.

那么如何将getAccount()中的数据传递给logIn()?当然,如果我不明白,我错过了编程逻辑中的一些基本内容:)

谢谢你的帮助.本杰明

python methods arguments

5
推荐指数
2
解决办法
5665
查看次数

Python:告诉X为应用程序保留屏幕空间

我正在尝试使用X Window Manager(即Linux平台)解决在屏幕上为应用程序保留空间的问题.我已经看到这个问题已经解决并解决了Gtk,我用Qt了同样的问题.由于没有人对Qt特定的问题作出反应(我也在其他论坛上提到过),我想我会概括我的问题:

是否有通用的pythonic方式告诉X为应用程序保留屏幕空间?

谢谢,
本杰明

python x11

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

如何将属性保留在 __dict__ 之外?

我正在创建一系列对象实例,我使用它们的__dict__属性保存和加载它们的属性。我想将一些属性保留在 之外__dict__,仅仅是因为我不希望它们被保存或加载。

进一步来说:

我创建了一个仅包含子对象列表的父对象。子对象__dict__被保存到文件并稍后加载以再次实例化它们。我希望子对象具有对父对象的引用,但我不希望将该引用保存到文件或从文件加载,因为它没有意义。

是否有任何语法可以从 中排除该属性__dict__

PS:许多答案建议使用pickle,我目前正在使用json来保持数据可读。

python attributes dictionary reference parent-child

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

对象与字典:如何组织数据树?

我正在编程某种模拟,其数据在树中组织.主要对象World包含一堆方法和一个City对象列表.每个City对象又有一堆方法和一个Population对象列表.Population对象没有自己的方法,它们只包含属性.

我的问题是关于后面的Population对象,我可以从中衍生出来object或创建为字典.组织这些的最有效方法是什么?

这几个案例说明了我的犹豫:

保存数据
我需要能够保存和加载模拟,为此我使用内置的json(我希望数据是人类可读的).由于程序是在树中组织的,因此在每个级别保存数据可能很麻烦.在这种情况下,群体最好作为附加到population列表的字典保存为City实例的属性.这样,保存只是将City实例传递给__dict__Json.

使用数据
如果我想操纵填充数据,它作为类实例比作为字典更容易.不仅语法简单,而且我还可以在编码时更好地享受内省特征.

性能
我最后不确定什么是最有效的资源.对象和字典最后几乎没有区别,因为每个对象都有一个__dict__属性,可用于访问其所有属性.如果我有大量的运行我的模拟CityPopulation对象,会是怎样用更少的资源:对象或字典?

那么,在树中组织数据的最有效方法是什么?字典或对象更受欢迎吗?或者组织数据树有什么秘密吗?

python tree resources dictionary object

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

Python:如何处理不可下标的对象?

我已经读过一个关于(非)可订阅对象的线程,但是它没有告诉我该怎么做。

我有一个代码调用mypost私有模块。目的是建立邮件帐户,并为此创建模块中MailAccounts()定义的对象mypost。配置文件中描述了帐户数量及其各自的详细信息。当应用程序启动时,它将收集帐户信息并将其存储在字典中,该字典的结构为:accounts = {service : { <MailAccounts Object at xxxxx> : {username : myusername, password : mypassword}}}其中service可以是“ gmail”,而模块中MailAccounts定义的类在哪里mypost。到目前为止,一切都很好。但是,当我要设置帐户时,需要调用其方法:MailAccounts.setupAccount(username, password)。我通过迭代字典的每个MailAccount对象并要求运行该方法来执行此操作:

for service in accounts:
        for account in accounts[service]:
            account.setupAccount(account['username'], account['password'])
Run Code Online (Sandbox Code Playgroud)

但是您可能已经猜到它没有用,Python返回:

TypeError: 'MailAccount' object is not subscriptable

如果我手动创建相同的帐户,则可以:

account = MailAccount()
account.setupAccount('myusername', 'mypassword')
Run Code Online (Sandbox Code Playgroud)

现在,我相信这与我<MailAccount Object at xxxx>是词典密钥有关吗?这使得它不可订阅(可能意味着什么)?

不,这到底是什么意思不可订阅?在此示例中意味着什么?当然,在这种情况下,我该如何解决/绕过此问题?

谢谢,本杰明:)

python methods dictionary subscript

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

进入Qt事件循环后如何自动执行一个方法?

我想执行一个只能在QApplication显示my 后调用的方法,即当它进入主事件循环时exec_()。我是 Qt4 的新手(使用 PyQt4):我希望有一个类似on_start()的回调,但没有找到。我需要创建一个线程或一个计时器吗?或者 API 中是否已经包含了一些回调?

python multithreading timer event-loop pyqt4

4
推荐指数
2
解决办法
4482
查看次数