python GUI设计中信号与槽的设计很相似matlab中的回调函数,先触发事件,发送信号,相对应的方法接受信号,执行命令。
qt designer 专用于python界面设计;
控件之间联动:连线至相应的控件
widgets:控件
SIGNAL(“signal”):信号参数,signal就是具体的信号名称
func:槽函数
instance.methodname:从一个已有的类中调用方法
instance.SLOT(“slotSignature”):控制其它控件的槽
setup.py文件是我们在每一个要发布的package项目是必须的。通过setup可以简化一些重复性的参数设置工作。
一个好的setup.py文件应该满足setup()函数内的参数都绑定到各自的常量上
import distutils.cmd
import platform
import os
import setuptools.command.build_py
import subprocess
import sys
from setuptools import setup, find_packages
version = "2.0"
description = "STORM microscope control code."
long_description = ""
setup(
# 包名称,也就是能够通过import name被导入的名字
name='storm_control',
version=version,
description=description,
long_description=long_description,
author='Hazen Babcock',
author_email='hbabcock at fas.harvard.edu',
url='https://github.com/ZhuangLab/storm-control',
# zip_safe 参数决定包是否作为一个 zip 压缩后的 egg 文件安装,还是作为一个以 .egg 结尾的目录安装。因为有些工具不支持 zip 压缩文件,而且压缩后的包也不方便调试,所以建议将其设为 False,即 zip_safe=False。
zip_safe=False,
# 打包时需要加入的模块,调用find_packages方法实现,可以实现对各种子包的添加
packages=find_packages(),
# 指定包内需要包含的数据文件
package_data={},
# 当 include_package_data 为 True 时该选项用于排除部分文件
exclude_package_data={},
# 该参数被设置为 True 时自动添加包中受版本控制的数据文件,可替代 package_data
include_package_data=True,
# 指定依赖的其他包
requires=[],
# 指定运行 setup.py 文件本身所依赖的包
setup_requires=[],
tests_require=[],
license="",
keywords='storm,microscopy',
# 参数说明包的分类信息
classifiers=[
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
'License :: MIT',
'Programming Language :: C',
'Programming Language :: Python :: 3',
],
)
包含子包的子包
如果有很多子包需要安装,同时子包中有各种子包,用find_packages就能够自动添加完所有的包.
find_packages(“dir”) 的功能是在 “dir” 目录下找所有带有 init.py 的文件夹, 即为package。 如果不指定dir, 那么就在 setup.py 所在的根目录下查找。 为什么我们要指定 NAME 为搜索目录呢? 原因很简单, 因为我们在同一级文件夹下可能有我们自己的一些其他测试文件, 也包含 init.py 文件。 这就有可能被误认为是我们要安装的包。 所以我们只在 NAME 目录下进行搜索, 然后将 NAME 作为前缀添加即可。
python中文意思:蟒蛇
egg:(蟒蛇的)蛋
所以egg是一个包含所有包数据的文件包;
理想情况下,egg会是一个使用zip压缩的文件,其中包含了所有需要的包文件,但是在某些情况下,setuptools 会决定(或被开关告知)包不应该是 zip 压缩的。
在这些情况下,egg 只是一个简单的未曾压缩的子目录,但是里面的内容是相同的。
python的egg文件类似于java中的jar文件,是一个工程打包文件,便于安装部署;
setuptools:包管理工具
安装setuptools
try
% 尝试执行的语句E
catch
% 如果E运行错误,
% 执行catch和end之间的代码块
end
QtCore.QMetaObject.connectSlotsByName(Dialog)
https://www.riverbankcomputing.com/static/Docs/PyQt5/signals_slots.html
#https://doc.qt.io/qt-5/qmetaobject.html#connectSlotsByName