QTpython环境是好的 怎么调用项目外的.py文件?

QTpython环境是好的 怎么调用项目外的.py文件?,第1张

直接就在这里面写也可以的,不用调用。 网上多看Blog,博客园和CSDN上例子都有。 我花了一周自学搞定了一个跟你类似的小项目。 你一定要调用的话,import A from A这种就可以,参照: 如何调用另一个py文件中的类和函数

我在学生时代学习过QT creator,现在工作基本就用python编程,不知道你用用QT导python包干嘛??它们之间的确可以互相通信,我也试过用python去导入c++包(QT是基于c++开发的),可是QT完全就是做界面的,python自带了做界面功能,导入有意义吗???

#include <QCoreApplication>
#include
<Pythonh>
#include
<iostream>
using
namespace
std;
int
main(
int
argc,
char
argv[]) { QCoreApplication a(argc, argv);
//
初始化python模块
Py_Initialize();
if
( !
Py_IsInitialized() ) {
return
; }
//
导入testpy模块
PyObject pModule = PyImport_ImportModule(
test
);
if
(!
pModule) { printf(
Cant open python file!\n
);
return
; }
//
获取test模块中的hello函数
PyObject pFunhello= PyObject_GetAttrString(pModule,
hello
);
//
注释掉的这部分是另一种获得test模块中的hello函数的方法
//
PyObject pDict = PyModule_GetDict(pModule);
//
if (!pDict) {
//
printf("Cant find dictionary\n");
//
return -1;
//
//
PyObject pFunhello = PyDict_GetItemString(pDict, "hello");
if
(!
pFunhello){ cout
<<
Get function hello failed
<<
endl;
return
; }
//
调用hello函数
PyObject_CallFunction(pFunhello,NULL);
//
结束,释放python
Py_Finalize();
return
aexec(); }

这篇文章主要介绍了详解Python中的join()函数的用法,join()函数主要用来拼接字符串,是Python学习当中的基础知识,需要的朋友可以参考下
函数:stringjoin()
Python中有join()和ospathjoin()两个函数,具体作用如下:
join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
ospathjoin(): 将多个路径组合后返回
一、函数说明
1、join()函数
语法: 'sep'join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
2、ospathjoin()函数
语法: ospathjoin(path1[,path2[,]])
返回值:将多个路径组合后返回
注:第一个绝对路径之前的参数将被忽略
二、实例#对序列进行 *** 作(分别使用' '与':'作为分隔符)
>>> seq1 = ['hello','good','boy','doiido']
>>> print ' 'join(seq1)
hello good boy doiido
>>> print ':'join(seq1)
hello:good:boy:doiido
#对字符串进行 *** 作
>>> seq2 = "hello good boy doiido"
>>> print ':'join(seq2)
h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o
#对元组进行 *** 作
>>> seq3 = ('hello','good','boy','doiido')
>>> print ':'join(seq3)
hello:good:boy:doiido
#对字典进行 *** 作
>>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4}
>>> print ':'join(seq4)
boy:good:doiido:hello
#合并目录
>>> import os
>>> ospathjoin('/hello/','good/boy/','doiido')
'/hello/good/boy/doiido'

如何将qt ui里的和matplotlib链接 python
Scrapy。看起来很强大的爬虫框架,可以满足简单的页面爬取(比如可以明确获知url pattern的情况)。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。但是对于稍微复杂一点的页面,如weibo的页面信息,这个框架就满足不了需求了。
mechanize。优点:可以加载JS。缺点:文档严重缺失。不过通过官方的example以及人肉尝试的方法,还是勉强能用的。
selenium。这是一个调用浏览器的driver,通过这个库你可以直接调用浏览器完成某些 *** 作,比如输入验证码。
cola。一个分布式爬虫框架。项目整体设计有点糟,模块间耦合度较高,不过值得借鉴。

软硬件环境

OS X EI Capitan

Python 351

PyQt 551

PyCharm 501

前言

在PyQt5系列教程的第一篇h50218157,我们已经搭建好了开发环境,今天,我们就用Python开发第一个Qt GUI程序,让大家感受下Qt开发的魅力,熟悉下Qt开发GUI程序的一般流程。

制作程序UI界面,一般会有2种方法,利用UI制作工具和纯代码编写,像移动开发中的Android和iOS都是这样,在PyQt5中,我们也有这么2种方式。

QtDesigner工具简介

QtDesigner是专门用来制作Qt程序UI界面的工具,它使用起来非常简单,只要通过拖拽和点击就可以完成复杂的界面设计,而且还可以随时预览查看效果图。

其中,区域1是UI界面制作导向,QtDesigner为我们提供了一些常用模块,非常方便;区域2是UI控件列表;区域3是控件属性列表;区域4是Action Editor编辑列表;区域5信号和槽的编辑列列表;区域6是资源处理窗口。

第一个PyQt5程序

说了这么多,还不如来动手实践一下。

这个是我们第一个PyQt5项目的界面效果图,需要实现的是当点击界面上的按钮时,d出一个提示框,提示框内显示一串文字。

好了,目标定好了,马上开始去实现它。

QtDesigner设计UI

创建一个基于Main Window模块的UI文件,取名叫firstPyQt5ui。从Widget Box中找到(也可以)Push Button,将它拖拽到工作空间里,调整位置,在Button上输入文字,调整字体及大小,这些都可以在Property Editor里 *** 作。按钮点击d框的 *** 作会牵出Qt里非常重要的一对概念,即信号和槽(signal and slot),关于这个我打算再开一篇博文细讲。现在你只需要知道slot就是一个函数,如果一个signal和一个slot绑定以后,那么signal被触发,slot就会被执行。

那么问题来了,怎么在QtDesigner里绑定signal和slot呢?打开菜单栏里的Edit—>Edit Signals/Slots,然后光标移到按钮上点击拖拽,这时会d出一个编辑框

因为是点击,所以signal选择clicked(),slot函数现在还没有,我们就点击Edit新建一个,叫firstPyQt5_button_click()

为了演示一下资源文件的使用,这里导入两张,一张给主窗口,另一张给帮助菜单项里的Action。

在QtDesigner引用资源文件之前,需要先准备一个qrc文件,它跟xml文件比较类似,用来制定资源文件的路径

<RCC version="10">
   <qresource>
       <file>qtpng</file>
       <file>penguinjpg</file>
   </qresource>
</RCC>

接下来就可以在QtDesigner的Resource Browser里倒入qrc文件,这样qrc文件中描述的资源就可以使用了

将firstPyQt5ui转换成python代码

非常简单,通过Qt提供的命令行工具pyuic5就可以轻松实现

pyuic5 -o firstPyQt5py firstPyQt5ui

创建PyCharm工程

新建一个新的python文件mainpy,代码如下

# -- coding: utf-8 --
__author__ = 'djstava@gmailcom'
import sys
from PyQt5QtWidgets import QApplication , QMainWindow
from firstPyQt5 import
if __name__ == '__main__':
   '''
   主函数
   '''
   app = QApplication(sysargv)
   mainWindow = QMainWindow()
   ui = Ui_mainWindow()
   uisetupUi(mainWindow)
   mainWindowshow()
   sysexit(appexec_())

接下修改下firstPyQt5py文件,主要是去实现slot函数,因为之前在QtDesigner里没有实现,让它d出一个消息框

def firtPyQt5_button_click(self):
   QtWidgetsQMessageBoxinformation(selfpushButton,"标题","这是第一个PyQt5 GUI程序")

最后运行下工程

这里一般将ui文件单独存成一个文件,便于更新。

#include <QCoreApplication>
//包含调用Python相应的头文件
#include <Pythonh>
int main(int argc, char argv[])
{
 QCoreApplication a(argc, argv);
//初始化Python解释器,这是调用 *** 作的第一步
 Py_Initialize();
 if( !Py_IsInitialized() ){
 return -1;
 }
//执行单句Python语句,用于给出调用模块的路径,否则将无法找到相应的调用模块
 PyRun_SimpleString("import sys");
 PyRun_SimpleString("syspathappend('/')");
//获取qt_python_funpy模块的指针
 PyObject pModule = PyImport_ImportModule("qt_python_fun");
 if (! pModule){
 printf("Can't open python file\n");
 return -1;
 }
//获取hello函数的指针
 PyObject pFunhello = PyObject_GetAttrString(pModule,"hello");
 if (!pFunhello){
 printf("Get function hello failed\n");
 return -1;
 }
//调用函数,传入参数为NULL
 PyObject_CallFunction(pFunhello,NULL);
//销毁Python解释器,这是调用的最后一步
 Py_Finalize();
 return aexec();
}
作者:sleepyjoker
链接:>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13349803.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存