• 推荐看github官方的demo
  • 部分转载自:here
  • > * PyQt4 26个实例

wxPython

安装

  • sudo apt-get install python-wxtools

小例子

一个小白框

#!/usr/bin/python
#coding=utf-8
import wx
app = wx.App(False)  # Create a new app, don't redirect stdout/stderr to a window.
frame = wx.Frame(None, wx.ID_ANY, "Hello World") # A Frame is a top-level window.
frame.Show(True)     # Show the frame.
app.MainLoop()
  • app = wx.App(False) 每一个wxPython app 都是 wx.App 的一个实例。 对于大多数简单的应用程序来说,你可以使用 wx.App 原型。当你用到更复杂的应用程序时,你需要扩展 wx.App 类。参数 “False” 表示 “不要重定向stdout and stderr 到一个窗口”。
  • wx.Frame(None,wx.ID_ANY,”Hello”) wx.Frame 是一个顶层窗口。语法是 x.Frame(Parent, Id, Title) 。大部分结构有这样的形式 (一个父对象,后面跟一个ID)。在这个例子中,我们使用 None 表示没有”父对象” , wx.ID_ANY 要求 wxWidgets 为我们分配一个id。
  • frame.Show(True) 我们通过”showing” 来显示则个框架。
  • app.MainLoop() 最后,我们启动应用程序的 MainLoop 语句,它的作用是处理事件。

小编辑器

import wx
class MainWindow(wx.Frame):def __init__(self, parent, title):wx.Frame.__init__(self, parent, title=title, size=(200,100))self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)self.CreateStatusBar() # A Statusbar in the bottom of the window# Setting up the menu.filemenu= wx.Menu()# wx.ID_ABOUT and wx.ID_EXIT are standard IDs provided by wxWidgets.filemenu.Append(wx.ID_ABOUT, "&About"," Information about this program")filemenu.AppendSeparator()filemenu.Append(wx.ID_EXIT,"E&xit"," Terminate the program")# Creating the menubar.menuBar = wx.MenuBar()menuBar.Append(filemenu,"&File") # Adding the "filemenu" to the MenuBarself.SetMenuBar(menuBar)  # Adding the MenuBar to the Frame content.self.Show(True)app = wx.App(False)
frame = MainWindow(None, "Sample editor")
app.MainLoop()
  • 第一部是做一个包含可编辑文本框的简单框架。 文本框用到了 wx.TextCtrl 组件。 默认情况下,文本框是一个单行字段,但是wx.TE_MULTILINE 参数允许你输入多行文本
  • 在这个例子中, 我们从 wx.Frame 派生并且重写了 init 方法。 这里我们声明了一个新的 wx.TextCtrl ,这是一个简单的文本编辑控件。请注意:由于 MyFrame 在内置的 init 方法运行了 self.Show() , 我们不需要再显示的调用 frame.Show()
  • 请注意 wx.ID_ABOUT 和wx.ID_EXIT 标示。 这些是wxWidgets提供的标准IDS (see a full listhere)。 如果有可用的,使用标准标示是一个很好的习惯。 这有助于让 wxWidgets 知道如何在每一个平台显示这个组件,使其看起来更加自然

PyQT

安装

  • 安装sip 这个是python和qt之间的c和c++连接库的东东
  • sudo apt-get install python-sip
  • sudo apt-get install sip-dev
  • 安装qmake及qt4
  • sudo apt-get install libqt4-dev libqt4-dbg libqt4-gui libqt4-sql qt4-dev-tools qt4-doc qt4-designer qt4-qtconfig
  • 安装pyqt4
  • sudo apt-get install python-qt4
  • 安装eric4 eric是pyqt的界面设计器的代码生成软件
  • sudo apt-get install eric
  • 一次性安装
  • sudo apt-get install libqt4-dev libqt4-dbg libqt4-gui libqt4-sql qt4-dev-tools qt4-doc qt4-designer qt4-qtconfig && sudo apt-get install python-qt4 && sudo apt-get install eric &&sudo apt-get install python-sip sip-dev

小例子

空白框

import sys
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
widget.resize(250, 150)
widget.setWindowTitle('PyQt')
widget.show()
sys.exit(app.exec_())
  • 第2行引入的QtGui是PyQt中最基本的模块,包含了PyQt的绘图组件及其相关类。
  • 第3行使用QApplication创建了一个application。每个PyQt程序中均要包含一个application对象。
  • 第4行使用QWidget创建了一个widget。
  • 并在第5行中使用resize设置了它的大小。
  • 第6行的setWindowsTitle设置了窗口标题的文字。
  • 第7行的show使这个widget显示出来。
  • 最后一行是这个程序的主循环,事件处理从本行语句开始。至于为什么是exec_而不是exec呢?是因为exec是Python的关键字。

PyQt4 查询流表路径的一个小程序

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
from OpFlow import * # 这是自己写的一个python文件,在github上
class LayoutDialog(QDialog):def __init__(self, parent=None):super(LayoutDialog, self).__init__(parent)self.setWindowTitle("Path Check")self.CreateControls()self.Layout()self.ConnectSignalSlot()def CreateControls(self):self.label_0 = QLabel(self.tr("src IP:"))self.label_1 = QLabel(self.tr("dst IP:"))self.label_2 = QLabel(self.tr("Path:"))self.srcip = QLineEdit()self.dstip = QLineEdit()self.path = QTextEdit()self.btn_check = QPushButton(self.tr("Check"))self.btn_check.clicked.connect(self.buttonClicked)def buttonClicked(self):srcip = self.srcip.text()dstip = self.dstip.text()res = control.getSwitchFlowPath(str(srcip), str(dstip))self.path.clear()for string in res:self.path.append(string)def Layout(self):self.LeftLayout()mainLayout = QGridLayout(self)mainLayout.setMargin(10)mainLayout.setSpacing(10)mainLayout.addLayout(self.leftLayout, 0, 0)mainLayout.setSizeConstraint(QLayout.SetFixedSize)def LeftLayout(self):self.leftLayout = QGridLayout()self.leftLayout.addWidget(self.label_0, 0, 0)self.leftLayout.addWidget(self.label_1, 1, 0)self.leftLayout.addWidget(self.label_2, 3, 0)self.leftLayout.addWidget(self.srcip, 0, 1)self.leftLayout.addWidget(self.dstip, 1, 1)self.leftLayout.addWidget(self.path, 3, 1)self.leftLayout.setColumnStretch(0, 1)self.leftLayout.setColumnStretch(1, 3)self.leftLayout.addWidget(self.btn_check)def ConnectSignalSlot(self):pass
control = Controller()
app = QApplication(sys.argv)
dialog = LayoutDialog()
dialog.show()
app.exec_()

PyQt5 简易计算器

import sys
from PyQt5 import QtWidgets,QtCore,QtGuiclass Example(QtWidgets.QWidget):def __init__(self):super(Example, self).__init__()self.initUI()self.reset()def initUI(self):self.setWindowTitle('简易计算器')grid = QtWidgets.QGridLayout()self.display = QtWidgets.QLineEdit('0')self.display.setFont(QtGui.QFont("Times", 20))self.display.setReadOnly(True)self.display.setAlignment(QtCore.Qt.AlignRight)self.display.setMaxLength(15)grid.addWidget(self.display,0,0,1,4)names = ['Clear', 'Back', '', 'Close','7', '8', '9', '/','4', '5', '6', '*','1', '2', '3', '-','0', '.', '=', '+']pos = [(0, 0), (0, 1), (0, 2), (0, 3),(1, 0), (1, 1), (1, 2), (1, 3),(2, 0), (2, 1), (2, 2), (2, 3),(3, 0), (3, 1), (3, 2), (3, 3 ),(4, 0), (4, 1), (4, 2), (4, 3)]c = 0for name in names:button = QtWidgets.QPushButton(name)button.setFixedSize(QtCore.QSize(60,30))button.clicked.connect(self.buttonClicked) # 给每个按钮设置信号/槽if c == 2:pass#grid.addWidget(QtWidgets.QLabel(''), 0, 2) #替换 第三个按钮 为 文本标签!else:grid.addWidget(button, pos[c][0]+1, pos[c][1])c = c + 1self.setLayout(grid)def buttonClicked(self):#sender = self.sender();  # 确定信号发送者#self.display.setText(sender.text())text = self.sender().text()if text in '+-*/':self.history.append(self.number) # 数字入栈self.history.append(text) # 运算符入栈self.operator = text # 设置当前运算符self.number = "" # 数字清空self.numberType = "int"returnelif text == "=":self.calculate() # 计算elif text == "Back":passelif text == "Clear":self.reset()elif text == "Close":self.close()elif text == ".":if self.numberType == "int":self.number += textself.numberType = "float"else:self.number = self.number + text if self.number != "0" else textself.display.setText(self.number)def calculate(self):passdef reset(self):self.number = "0"self.result = 0self.history = []self.operator = '' # +,-,*,/self.numberType = 'int' # int与float两种,如果输入了小数点则为实数app = QtWidgets.QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())

PyQt4经典的26个实例教程

  • 地址
  • 还有PDF版的

wxPython PyQT相关推荐

  1. wxpython pyqt_python gui 中三大框架tkinter ,wxpython, pyqt如何选择

    我们都知道当一个东西比较匮乏的时候,我们会比较苦恼,苦恼找不到好的替代.但是但一个东西比较丰富的时候,我们也会苦恼,苦恼的是如何进行选择.就比如每天我们都面临的一个巨大的难题就是今天中午吃什么? py ...

  2. wxPython和PyQt谁才是最赞的Python GUI库?

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,Python GUI图形库允许Python程序员很方便的创建完整的.功能键全的GUI用户界面.作为Python开发者,你迟早都会用到 ...

  3. wxPython:一曲MFC时代的挽歌,更是理想主义的绝唱

    文章目录 1. 概述 1.1 组织架构 1.2 安装 2 快速体验 2.1 桌面应用程序开发的一般流程 2.2 Hello World 2.3 常用控件介绍 3. 控件布局 3.1. 分区布局 3.2 ...

  4. wxpython有可视化吗_WxPython可视化编辑器

    WxPython可视化编辑器是一款可视化的Python编辑器,各个组件配备官网翻译的中文文档跟对应链接,可以直接通过鼠标拖拽来设计程序,有需要的用户不要错过了,赶快来下载吧! 软件说明 本工具只是用来 ...

  5. day1-Python擅长的领域+学习内容

    Python擅长的领域 WEB开发 Django   Pyramid     Tornado       Bottle    Flask    WebPy 网络编程 Twisted        Re ...

  6. Python第一天:你必须要知道的Python擅长领域以及各种重点学习框架(包含Python在世界上...

    [toc] 今天开始将会发布系列型的Python学习, 今天讲述的框架相对来说比较多,只能一一例举出来, 无法进行准确的 Python5大擅长领域 很多学Python的小伙伴, 转行, 或者兴趣还有就 ...

  7. python的应用范围有哪些_Python主要应用场景有哪些?

    Python应用在网络Web应用发展.用于操作系统管理.服务器维护的自动化脚本.科技计算.电脑软件.服务软体(网路软体).游戏.设想实现.产品早期原型和迭代等方面. 1.网络Web应用发展 通常在 W ...

  8. 为什么学Python

    Python在一些知名公司的应用 谷歌: Google App Engine.code google.com.Google earth.谷歌爬虫.Google广 告等项目都在大量使用Python开发 ...

  9. python学习笔记(python介绍)

    为什么要学python? python和shell的比较,和PHP.和JAVA比较 运维开发只是用到python的很小一部分 python在一些知名公司的应用: 谷歌:python的创始人原来在谷歌工 ...

最新文章

  1. ubuntu mysql 驱动_怎么在Ubuntu下为MySQL添加ODBC驱动?
  2. php系统升级说明,PHPCMF内容管理框架 v4.2.7 升级说明
  3. tcpdump抓取HTTP包
  4. Java ByteArrayInputStream skip()方法与示例
  5. Java 基础之java运算符
  6. 完成课件中的动手动脑的或需要验证的相关内容。
  7. H3C 模拟器 防火墙开启Web功能
  8. java版电子商务spring cloud分布式微服务b2b2c社交电商(一)服务的注册与发现(Eureka)...
  9. IEEE Trans LaTex模板参考文献格式
  10. 黑鲨重装计算机安装无法继续,示例黑鲨装机大师装机失败无法开机怎么办?
  11. 服务器pci数据捕获和信号处理控制器驱动,PCI数据捕获和信号处理控制器是哪个驱动...
  12. 与朋友谈心,也是与自己谈心
  13. NPN 、PNP 三极管开关形式的典型接法(注意上下拉电阻)
  14. VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。VMX进程已经提前退出。
  15. 互联网创业公司如何防御DDoS攻击?
  16. Three.js坐标系与变换矩阵快速入门
  17. 洛谷 P4188 [USACO18JAN]Lifeguards (线段树)
  18. 英语零散笔记Note整理
  19. 微信小程序苹果IOS手机无法加载显示临时图片路径
  20. 你需要知道的8种数据结构

热门文章

  1. pdf文件转换ppt可编辑_创建,转换和编辑PDF文件的免费工具
  2. 无线鼠标迟钝但并不是电量问题
  3. 多任务学习(MTL)--学习笔记
  4. 2022电工(中级)操作证考试题库及模拟考试
  5. Matlab中reshape函数的使用
  6. mo和po文件相互转化
  7. 跨境12V汽车一键启动PKE无钥匙进入遥控远程启动系统改装
  8. Python爬虫之gif图片抓取
  9. 国行Android手机使用google全套GMS服务小结
  10. 面试官谈游戏开发入行--选择