wxPython PyQT
- 推荐看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相关推荐
- wxpython pyqt_python gui 中三大框架tkinter ,wxpython, pyqt如何选择
我们都知道当一个东西比较匮乏的时候,我们会比较苦恼,苦恼找不到好的替代.但是但一个东西比较丰富的时候,我们也会苦恼,苦恼的是如何进行选择.就比如每天我们都面临的一个巨大的难题就是今天中午吃什么? py ...
- wxPython和PyQt谁才是最赞的Python GUI库?
Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,Python GUI图形库允许Python程序员很方便的创建完整的.功能键全的GUI用户界面.作为Python开发者,你迟早都会用到 ...
- wxPython:一曲MFC时代的挽歌,更是理想主义的绝唱
文章目录 1. 概述 1.1 组织架构 1.2 安装 2 快速体验 2.1 桌面应用程序开发的一般流程 2.2 Hello World 2.3 常用控件介绍 3. 控件布局 3.1. 分区布局 3.2 ...
- wxpython有可视化吗_WxPython可视化编辑器
WxPython可视化编辑器是一款可视化的Python编辑器,各个组件配备官网翻译的中文文档跟对应链接,可以直接通过鼠标拖拽来设计程序,有需要的用户不要错过了,赶快来下载吧! 软件说明 本工具只是用来 ...
- day1-Python擅长的领域+学习内容
Python擅长的领域 WEB开发 Django Pyramid Tornado Bottle Flask WebPy 网络编程 Twisted Re ...
- Python第一天:你必须要知道的Python擅长领域以及各种重点学习框架(包含Python在世界上...
[toc] 今天开始将会发布系列型的Python学习, 今天讲述的框架相对来说比较多,只能一一例举出来, 无法进行准确的 Python5大擅长领域 很多学Python的小伙伴, 转行, 或者兴趣还有就 ...
- python的应用范围有哪些_Python主要应用场景有哪些?
Python应用在网络Web应用发展.用于操作系统管理.服务器维护的自动化脚本.科技计算.电脑软件.服务软体(网路软体).游戏.设想实现.产品早期原型和迭代等方面. 1.网络Web应用发展 通常在 W ...
- 为什么学Python
Python在一些知名公司的应用 谷歌: Google App Engine.code google.com.Google earth.谷歌爬虫.Google广 告等项目都在大量使用Python开发 ...
- python学习笔记(python介绍)
为什么要学python? python和shell的比较,和PHP.和JAVA比较 运维开发只是用到python的很小一部分 python在一些知名公司的应用: 谷歌:python的创始人原来在谷歌工 ...
最新文章
- ubuntu mysql 驱动_怎么在Ubuntu下为MySQL添加ODBC驱动?
- php系统升级说明,PHPCMF内容管理框架 v4.2.7 升级说明
- tcpdump抓取HTTP包
- Java ByteArrayInputStream skip()方法与示例
- Java 基础之java运算符
- 完成课件中的动手动脑的或需要验证的相关内容。
- H3C 模拟器 防火墙开启Web功能
- java版电子商务spring cloud分布式微服务b2b2c社交电商(一)服务的注册与发现(Eureka)...
- IEEE Trans LaTex模板参考文献格式
- 黑鲨重装计算机安装无法继续,示例黑鲨装机大师装机失败无法开机怎么办?
- 服务器pci数据捕获和信号处理控制器驱动,PCI数据捕获和信号处理控制器是哪个驱动...
- 与朋友谈心,也是与自己谈心
- NPN 、PNP 三极管开关形式的典型接法(注意上下拉电阻)
- VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。VMX进程已经提前退出。
- 互联网创业公司如何防御DDoS攻击?
- Three.js坐标系与变换矩阵快速入门
- 洛谷 P4188 [USACO18JAN]Lifeguards (线段树)
- 英语零散笔记Note整理
- 微信小程序苹果IOS手机无法加载显示临时图片路径
- 你需要知道的8种数据结构