python+QT designer 做图形化界面EXE程序

1、安装python

2、安装QT designer 或QT creator

3、打开QT designer 绘制你想要的图形化界面

类似这样

之后将文件保存,以ui后缀形式保存

4、下载安装pyside

直接easy_install 或pip安装 可能会保存,我安装的时候,提示 msvc 版本问题

查看许多国外论坛后,可以选择,pyside网站下载 对应Python版本的 whl安装包,下载成功之后,进入对应目录路径,直接 pip install  *.whl    *为包名

安装成功

5、将之前保存的ui后缀文件 转为py文件

pyside-uic  *.ui  -o  *.py

转换完成 就看到一个Python代码的 QT界面设计

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file ‘test.ui‘## Created: Mon Apr 10 17:35:04 2017#      by: pyside-uic 0.2.15 running on PySide 1.2.4## WARNING! All changes made in this file will be lost!

from PySide import QtCore, QtGui

class Ui_Frame(object):    def setupUi(self, Frame):        Frame.setObjectName("Frame")        Frame.resize(683, 596)        Frame.setFrameShape(QtGui.QFrame.StyledPanel)        Frame.setFrameShadow(QtGui.QFrame.Raised)        self.pushButton = QtGui.QPushButton(Frame)        self.pushButton.setGeometry(QtCore.QRect(270, 350, 75, 23))        self.pushButton.setObjectName("pushButton")        self.widget = QtGui.QWidget(Frame)        self.widget.setGeometry(QtCore.QRect(40, 390, 541, 171))        self.widget.setObjectName("widget")        self.frame = QtGui.QFrame(Frame)        self.frame.setGeometry(QtCore.QRect(30, 40, 621, 291))        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)        self.frame.setFrameShadow(QtGui.QFrame.Raised)        self.frame.setObjectName("frame")        self.lineEdit = QtGui.QLineEdit(self.frame)        self.lineEdit.setGeometry(QtCore.QRect(20, 30, 31, 21))        self.lineEdit.setObjectName("lineEdit")        self.lineEdit_2 = QtGui.QLineEdit(self.frame)        self.lineEdit_2.setGeometry(QtCore.QRect(120, 30, 301, 21))        self.lineEdit_2.setObjectName("lineEdit_2")        self.commandLinkButton = QtGui.QCommandLinkButton(self.frame)        self.commandLinkButton.setGeometry(QtCore.QRect(520, 20, 91, 41))        self.commandLinkButton.setObjectName("commandLinkButton")        self.pushButton_2 = QtGui.QPushButton(self.frame)        self.pushButton_2.setGeometry(QtCore.QRect(430, 210, 75, 23))        self.pushButton_2.setObjectName("pushButton_2")        self.lineEdit_3 = QtGui.QLineEdit(self.frame)        self.lineEdit_3.setGeometry(QtCore.QRect(10, 70, 113, 20))        self.lineEdit_3.setObjectName("lineEdit_3")        self.lineEdit_4 = QtGui.QLineEdit(self.frame)        self.lineEdit_4.setGeometry(QtCore.QRect(10, 100, 113, 20))        self.lineEdit_4.setObjectName("lineEdit_4")        self.lineEdit_5 = QtGui.QLineEdit(self.frame)        self.lineEdit_5.setGeometry(QtCore.QRect(10, 130, 113, 20))        self.lineEdit_5.setObjectName("lineEdit_5")        self.lineEdit_6 = QtGui.QLineEdit(self.frame)        self.lineEdit_6.setGeometry(QtCore.QRect(10, 160, 113, 20))        self.lineEdit_6.setObjectName("lineEdit_6")        self.lineEdit_7 = QtGui.QLineEdit(self.frame)        self.lineEdit_7.setGeometry(QtCore.QRect(10, 190, 113, 20))        self.lineEdit_7.setObjectName("lineEdit_7")        self.lineEdit_8 = QtGui.QLineEdit(self.frame)        self.lineEdit_8.setGeometry(QtCore.QRect(140, 70, 113, 20))        self.lineEdit_8.setObjectName("lineEdit_8")        self.lineEdit_9 = QtGui.QLineEdit(self.frame)        self.lineEdit_9.setGeometry(QtCore.QRect(140, 100, 113, 20))        self.lineEdit_9.setObjectName("lineEdit_9")        self.lineEdit_10 = QtGui.QLineEdit(self.frame)        self.lineEdit_10.setGeometry(QtCore.QRect(140, 160, 113, 20))        self.lineEdit_10.setObjectName("lineEdit_10")        self.lineEdit_11 = QtGui.QLineEdit(self.frame)        self.lineEdit_11.setGeometry(QtCore.QRect(140, 130, 113, 20))        self.lineEdit_11.setObjectName("lineEdit_11")        self.lineEdit_12 = QtGui.QLineEdit(self.frame)        self.lineEdit_12.setGeometry(QtCore.QRect(140, 190, 113, 20))        self.lineEdit_12.setObjectName("lineEdit_12")        self.label_2 = QtGui.QLabel(self.frame)        self.label_2.setGeometry(QtCore.QRect(20, 10, 54, 12))        self.label_2.setObjectName("label_2")        self.comboBox = QtGui.QComboBox(self.frame)        self.comboBox.setGeometry(QtCore.QRect(60, 30, 51, 22))        self.comboBox.setObjectName("comboBox")        self.comboBox.addItem("")        self.comboBox.addItem("")        self.comboBox.addItem("")        self.comboBox.addItem("")        self.comboBox_2 = QtGui.QComboBox(self.frame)        self.comboBox_2.setGeometry(QtCore.QRect(450, 30, 51, 22))        self.comboBox_2.setObjectName("comboBox_2")        self.comboBox_2.addItem("")        self.comboBox_2.addItem("")        self.label = QtGui.QLabel(Frame)        self.label.setGeometry(QtCore.QRect(40, 10, 54, 12))        self.label.setObjectName("label")

self.retranslateUi(Frame)        QtCore.QMetaObject.connectSlotsByName(Frame)

def retranslateUi(self, Frame):        Frame.setWindowTitle(QtGui.QApplication.translate("Frame", "Frame", None, QtGui.QApplication.UnicodeUTF8))        self.pushButton.setText(QtGui.QApplication.translate("Frame", "start", None, QtGui.QApplication.UnicodeUTF8))        self.lineEdit.setText(QtGui.QApplication.translate("Frame", "URL", None, QtGui.QApplication.UnicodeUTF8))        self.lineEdit_2.setText(QtGui.QApplication.translate("Frame", "http://www.baidu.com", None, QtGui.QApplication.UnicodeUTF8))        self.commandLinkButton.setText(QtGui.QApplication.translate("Frame", "check", None, QtGui.QApplication.UnicodeUTF8))        self.pushButton_2.setText(QtGui.QApplication.translate("Frame", "选择文件", None, QtGui.QApplication.UnicodeUTF8))        self.label_2.setText(QtGui.QApplication.translate("Frame", "参数", None, QtGui.QApplication.UnicodeUTF8))        self.comboBox.setItemText(0, QtGui.QApplication.translate("Frame", "get", None, QtGui.QApplication.UnicodeUTF8))        self.comboBox.setItemText(1, QtGui.QApplication.translate("Frame", "post", None, QtGui.QApplication.UnicodeUTF8))        self.comboBox.setItemText(2, QtGui.QApplication.translate("Frame", "head", None, QtGui.QApplication.UnicodeUTF8))        self.comboBox.setItemText(3, QtGui.QApplication.translate("Frame", "delete", None, QtGui.QApplication.UnicodeUTF8))        self.comboBox_2.setItemText(0, QtGui.QApplication.translate("Frame", "true", None, QtGui.QApplication.UnicodeUTF8))        self.comboBox_2.setItemText(1, QtGui.QApplication.translate("Frame", "false", None, QtGui.QApplication.UnicodeUTF8))        self.label.setText(QtGui.QApplication.translate("Frame", "接口调试", None, QtGui.QApplication.UnicodeUTF8))

6、写程序给上述代码添加功能

# -*- coding:UTF-8 -*-import sys,socket,requests,urllib,urllib2import re,jsonfrom urlparse import urlparse# Import Qt GUI componentfrom PySide.QtGui import *

# Import GUI Filefrom http import Ui_Frame

class  Frame(QFrame,Ui_Frame):

def  __init__(self,parent=None):      super(Frame,self).__init__(parent)      self.setupUi(self)      self.pushButton.clicked.connect(self.cc)      self.commandLinkButton.clicked.connect(self.check)      self.pushButton_3.clicked.connect(self.clear)      self.pushButton_2.clicked.connect(self.clearargv)   def cc(self):      url=self.lineEdit_2.text()      method_txt=self.comboBox.currentText()      varify_txt=self.comboBox_2.currentText()      if varify_txt==‘true‘:         varify=True      else:         varify=False      if method_txt==‘get‘:         method=requests.get      elif method_txt==‘post‘:         method=requests.post      elif method_txt==‘head‘:         method=requests.head      else:         method=requests.delete      argv1=self.lineEdit_3.text()      argv2=self.lineEdit_8.text()      argv3 = self.lineEdit_4.text()      argv4 = self.lineEdit_9.text()      argv5 = self.lineEdit_5.text()      argv6 = self.lineEdit_10.text()      argv7 = self.lineEdit_6.text()      argv8 = self.lineEdit_11.text()      argv9 = self.lineEdit_7.text()      argv10 = self.lineEdit_12.text()      payload={         argv1:argv2,         argv3:argv4,         argv5: argv6,         argv7: argv8,         argv9: argv10,                }      try:         r=method(url,data=payload,verify=varify)      except:         print "something wrong"      t=str(r.text) + ‘\n‘ + str(r.headers)      self.lineEdit_13.setText(t)      print url,method_txt,r.text,payload,varify   def check(self):      a = self.lineEdit_2.text()      topHostPostfix = (         ‘.com‘, ‘.la‘, ‘.io‘, ‘.co‘, ‘.info‘, ‘.net‘, ‘.org‘, ‘.me‘, ‘.mobi‘,         ‘.us‘, ‘.biz‘, ‘.xxx‘, ‘.ca‘, ‘.co.jp‘, ‘.com.cn‘, ‘.net.cn‘,         ‘.org.cn‘, ‘.mx‘, ‘.tv‘, ‘.ws‘, ‘.ag‘, ‘.com.ag‘, ‘.net.ag‘,         ‘.org.ag‘, ‘.am‘, ‘.asia‘, ‘.at‘, ‘.be‘, ‘.com.br‘, ‘.net.br‘,         ‘.bz‘, ‘.com.bz‘, ‘.net.bz‘, ‘.cc‘, ‘.com.co‘, ‘.net.co‘,         ‘.nom.co‘, ‘.de‘, ‘.es‘, ‘.com.es‘, ‘.nom.es‘, ‘.org.es‘,         ‘.eu‘, ‘.fm‘, ‘.fr‘, ‘.gs‘, ‘.in‘, ‘.co.in‘, ‘.firm.in‘, ‘.gen.in‘,         ‘.ind.in‘, ‘.net.in‘, ‘.org.in‘, ‘.it‘, ‘.jobs‘, ‘.jp‘, ‘.ms‘,         ‘.com.mx‘, ‘.nl‘, ‘.nu‘, ‘.co.nz‘, ‘.net.nz‘, ‘.org.nz‘,         ‘.se‘, ‘.tc‘, ‘.tk‘, ‘.tw‘, ‘.com.tw‘, ‘.idv.tw‘, ‘.org.tw‘,         ‘.hk‘, ‘.co.uk‘, ‘.me.uk‘, ‘.org.uk‘, ‘.vg‘, ".com.hk")

regx = r‘[^\.]+(‘ + ‘|‘.join([h.replace(‘.‘, r‘\.‘) for h in topHostPostfix]) + ‘)$‘      pattern = re.compile(regx, re.IGNORECASE)

print "--" * 40      parts = urlparse(a)      host = parts.netloc      m = pattern.search(host)      res = m.group() if m else host      print "unkown" if not res else res      ip=socket.gethostbyname(host)      self.lineEdit_13.setText(ip)      print ip   def clear(self):      self.lineEdit_13.clear()   def clearargv(self):      self.lineEdit_3.clear()      self.lineEdit_4.clear()      self.lineEdit_5.clear()      self.lineEdit_6.clear()      self.lineEdit_7.clear()      self.lineEdit_8.clear()      self.lineEdit_9.clear()      self.lineEdit_10.clear()      self.lineEdit_11.clear()      self.lineEdit_12.clear()

if __name__==‘__main__‘:   Program = QApplication(sys.argv)   Window=Frame()   Window.show()   Program.exec_()

7、将上述程序打包成EXE

使用pyinstaller

把第6步写的代码文件,复制到pyinstaller目录下

执行  Python pyinstaller.py -D -w *.py

——D的意思   生成目录,生成EXE以及一些依赖文件-W 没有控制台

				
时间: 2024-10-17 04:54:35

python+QT designer 做图形化界面EXE程序的相关文章

Java图形化界面设计——容器(JFrame)

Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构,现在就进入java图形化界面编程. 一.Java基本类(JFC) Java基本类(“JavaFoundationClasses”,JFC),由一些软件包组成.这些软件包主要包括下面一些应用程序接口(API): ·抽象窗口工具集(AWT)(1.1及以上版本). ·Swing构件. ·Java 2D应

二十七、Java图形化界面设计——容器(JFrame)

摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构,现在就进入java图形化界面编程. 一.Java基本类(JFC) Java基本类("JavaFoundationClasses",JFC),由一些软件包组成.这些

PySide——Python图形化界面入门教程(六)

PySide——Python图形化界面入门教程(六) ——QListView和QStandardItemModel 翻译自:http://pythoncentral.io/pyside-pyqt-tutorial-qlistview-and-qstandarditemmodel/ 上一个教程中,我们讨论了Qt的QListWidget类,它用来实现简单的单列列表框(list boxes).然而,我们还需要更加灵活的widget来实现列表,Qt为此提供了QListView 来实现多种多样的项.它是一

PySide——Python图形化界面

PySide——Python图形化界面 PySide——Python图形化界面入门教程(四) PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your Own Signals and Slots 原文链接:http://pythoncentral.io/pysidepyqt-tutorial-creating-your-own-signals-and-slots/ 你不必局限于Qt widget提供的信号,你可以使用Signal类来创建自己的信号

PySide——Python图形化界面入门教程(一)

PySide——Python图形化界面入门教程(一) ——基本部件和HelloWorld 原文链接:http://pythoncentral.io/intro-to-pysidepyqt-basic-widgets-and-hello-world/ 本教程第一部分将给出PySide的最基本知识点,包含使用的对象,和一些能帮助你了解Python/Qt应用是如何构建的小例子. 首先来看一下基本的Qt对象.Qt包含了许多类去处理XML.多媒体.数据库和网络等等事物,但我们现在重点关注可视化的元素——窗

PySide——Python图形化界面入门教程(二)

PySide——Python图形化界面入门教程(二) ——交互Widget和布局容器 ——Interactive Widgets and Layout Containers 原文链接:http://pythoncentral.io/pyside-pyqt-tutorial-interactive-widgets-and-layout-containers/ 上一个教程中,我们了解了一些QWidget提供的功能,还有一个特殊的子类QLabel.更进一步的,我们完成了一个用来说明简单Python/Q

PySide——Python图形化界面入门教程(三)

PySide——Python图形化界面入门教程(三) ——使用内建新号和槽 ——Using Built-In Signals and Slots 上一个教程中,我们学习了如何创建和建立交互widgets,以及将他们布局的两种不同的方法.今天我们继续讨论Python/Qt应用响应用户触发的事件:信号和槽. 当用户执行一个动作——点击按钮,选择组合框的值,在文本框中打字——这个widget就会发出一个信号.这个信号自己什么都不做,它必须和槽连接起来才行.槽是一个接受信号的执行动作的对象. 连接内建P

图形化界面设计软件简要介绍

[摘要]:面向使用者的系统工程设计,其目的是要准确.快速地在设计者和使用者之间传递信息和实现功能,也是优化产品性能来适应大众的操作能力,减轻使用者的认知负担.成功的系统工程设计能使得图形化界面更科学合理,更好地满足使用者的需要.对于开发者而言需要主要如下几个方面:1,对系统工程应用需要有准确的定位:2,利用设计开发软件提高GUI运行速度:3,系统开发时对系统工程的可扩展性和提供文档帮助. 1. 前言: 随着计算机技术的发展,软件技术突飞发展.在工程领域,智能化.自动化的的要求也越来越高.所以对应

Git个大平台(win/Linux/Mac)图形化界面客户端大汇总

摘要: 介绍各平台下的图形化界面git客户端(本人并没有全部使用过),欢迎大家补充新的软件或者使用感受~ 一.TortoiseGit - The coolest Interface to Git Version Control TortoiseGit 是 TortoiseSVN 的 Git 版本,TortoiseGit 用于迁移 TortoiseSVN 到 TortoiseGit,一直以来 Git 在 Windows 平台没有好用 GUI 客户端,现在 TortoiseGit 的出现给 Wind