小编use*_*153的帖子

在PyQt5中缺少menuBar

我一直在使用PyQt5开发GUI,并希望包含一个菜单栏.但是,当我编写此功能时,我的菜单不会出现.弄清楚我对如何在PyQt5中实现菜单栏的理解是关闭的,我在网上找了一个预先存在的例子.通过一些调整,我开发了以下测试用例:

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenuBar, QAction, qApp

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        exitAction = QAction(QIcon('exit.png'), '&Exit', self)
        exitAction.triggered.connect(qApp.quit)

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&Testmenu')
        fileMenu.addAction(exitAction)

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

然而,当我运行它时,Testmenu无处可寻.

我还尝试在QTCreator中创建菜单栏(以及我的GUI布局的其余部分),然后使用pyuic5将.ui文件转换为可导入的.py文件.我认为这会消除我的一些编程错误,但菜单栏仍然不会显示.有什么想法吗?

编辑:

我在Jupyter笔记本4.1版本中使用Python 3.5(Anaconda 4.1)运行此代码.我也在使用运行os 10.1l,PyQt 5.7和Qt 5.7.0版本的Macbook.

我已经意识到,如果我单击应用程序窗口然后单击返回窗口,菜单栏将变为响应 - 有效地不聚焦并聚焦应用程序.有了这些信息,我意识到我不是第一个注意到这个问题的人(见https://github.com/robotology/yarp/issues/457).不幸的是,我仍然不确定如何解决这个问题.

python macos pyqt menubar pyqt5

7
推荐指数
3
解决办法
5918
查看次数

在setup.py中包含数据文件

我在setup.py脚本中包含数据文件时遇到麻烦。我的程序包设置如下:

my_package/
    setup.py
    MANIFEST.in

    my_package/
        __init__.py
        access_data.py

        data_files/
            my_data_file.csv
Run Code Online (Sandbox Code Playgroud)

我想my_data_file.csv在安装时包括该文件,以便可以读取access_data.py。为此,我在中使用了package_data关键字setuptools

setup(...,
      packages=['my_package'],
      package_data={'my_package': ['./my_package/data_files/my_data_file.csv']},
      include_package_data=True
      )
Run Code Online (Sandbox Code Playgroud)

我还将文件包含在MANIFEST.in

recursive-include my_package/data_files *
Run Code Online (Sandbox Code Playgroud)

setup.py似乎运行良好,并且不会引发任何错误。但是,当我导入程序包时,我得到一个文件找不到错误,因为my_data_file.csv丢失了。我尝试引用其他堆栈溢出问题(尤其是这个问题),但无法弄清楚我在做什么错。如何获取setup.py以包含必要的数据文件?

python packaging setuptools setup.py

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

使用 python 线性拟合中的误差传播

假设我对某个因变量y相对于某个自变量进行了多次测量x。我还记录了每次测量的不确定度dy。作为一个例子,这可能看起来像

import numpy as np
x = np.array([1, 2, 3, 4])
y = np.array([4.1, 5.8, 8.1, 9.7])
dy = np.array([0.2, 0.3, 0.2, 0.4]) 
Run Code Online (Sandbox Code Playgroud)

现在假设我希望测量值遵循线性关系y = mx + b,并且我想确定y_umn某些未测量的 x 值的y 值x_unm。如果不考虑错误,我可以很容易地在 Python 中执行线性拟合:

fit_params, residuals, rank, s_values, rcond = np.polyfit(x, y, 1, full=True)
poly_func = np.poly1d(fit_params)

x_unm   # The unmeasured x value
y_unm = poly_func(x_unm)  # The unmeasured x value
Run Code Online (Sandbox Code Playgroud)

我对这种方法有两个问题。首先是np.polyfit没有包含每个点的错误。其次,我不知道不确定性y_unm是什么。

有谁知道如何使数据与不确定性相匹配,从而使我能够确定 的不确定性y_unm …

python statistics numpy linear-regression

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

您可以从带有open(fname,'a +')的文件中读取第一行吗?

我希望能够打开一个文件,在末尾附加一些文本,然后仅读取第一行。我确切知道文件的第一行有多长时间,并且文件足够大,我不想一次将其全部读入内存。我试过使用:

with open('./output files/log.txt', 'a+') as f:

    f.write('This is example text')

    content = f.readline()
    print(content)
Run Code Online (Sandbox Code Playgroud)

但是打印语句为空。当我尝试使用open('./output files/log.txt')open('./output files/log.txt', 'r+')代替open('./output files/log.txt', 'a+')它工作时,所以我知道它与'a+参数有关。我的问题是我必须附加到文件。我如何追加到文件并仍然获得第一行而不使用类似的东西

with open('./output files/log.txt', 'a+') as f_1:

    f.write('This is example text')

    with open('./output files/log.txt') as f_2:
        content = f_2.readline()
        print(content)
Run Code Online (Sandbox Code Playgroud)

python file python-3.x

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

使用SQLAlchemy Postgres批量上传

我在这里遵循SQLAlchemy文档以使用Postgres编写批量upsert语句。为了演示,我有一个简单的表MyTable

class MyTable(base):
    __tablename__ = 'mytable'
    id = Column(types.Integer, primary_key=True)
    test_value = Column(types.Text)
Run Code Online (Sandbox Code Playgroud)

创建通用插入语句非常简单:

from sqlalchemy.dialects import postgresql

values = [{'id': 0, 'test_value': 'a'}, {'id': 1, 'test_value': 'b'}]
insert_stmt = postgresql.insert(MyTable.__table__).values(values)
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是当我尝试添加upsert的“冲突时”部分。

update_stmt = insert_stmt.on_conflict_do_update(
    index_elements=[MyTable.id],
    set_=dict(data=values)
)
Run Code Online (Sandbox Code Playgroud)

尝试执行此语句会产生一个ProgrammingError

from sqlalchemy import create_engine
engine = create_engine('postgres://localhost/db_name')

engine.execute(update_stmt)

>>> ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'dict'
Run Code Online (Sandbox Code Playgroud)

我认为我的误解是使用该on_conflict_do_update方法构造语句。有人知道如何构造此语句吗?我已经在StackOverflow上查看了其他问题(例如here),但似乎无法解决上述错误。

python postgresql sqlalchemy upsert

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