pyqt4.1

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

import sip  #程序打包需要

import  decimal #程序打包需要

from PyQt4 import QtCore, QtGui

from PyQt4 import QtWebKit

from PyQt4.QtGui import *

from PyQt4.QtCore import *

import sys

from PyQt4.QtWebKit import QWebView, QWebPage, QWebSettings

from PyQt4 import QtWebKit

QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))

class MyTool(QMainWindow):

def createActions(self):

self.fileOpenAction=QAction(QIcon("./image/fileopen.png"),self.tr("打开"),self)

self.fileOpenAction.setShortcut("Ctrl+O")

self.fileOpenAction.setStatusTip(self.tr("打开一个文件"))

self.connect(self.fileOpenAction,SIGNAL("triggered()"),self.slotOpenFile)

self.fileNewAction=QAction(QIcon("./image/filenew.png"),self.tr("新建"),self)

self.fileNewAction.setShortcut("Ctrl+N")

self.fileNewAction.setStatusTip(self.tr("新建一个文件"))

self.connect(self.fileNewAction,SIGNAL("triggered()"),self.slotNewFile)

self.fileSaveAction=QAction(QIcon("./image/filesave.png"),self.tr("保存"),self)

self.fileSaveAction.setShortcut("Ctrl+S")

self.fileSaveAction.setStatusTip(self.tr("保存文件"))

self.connect(self.fileSaveAction,SIGNAL("triggered()"),self.slotSaveFile)

self.exitAction=QAction(QIcon("./image/filequit.png"),self.tr("退出"),self)

self.exitAction.setShortcut("Ctrl+Q")

self.setStatusTip(self.tr("退出"))

self.connect(self.exitAction,SIGNAL("triggered()"),self.close)

self.cutAction=QAction(QIcon("./image/editcut.png"),self.tr("剪切"),self)

self.cutAction.setShortcut("Ctrl+X")

self.cutAction.setStatusTip(self.tr("剪切到粘贴板"))

#self.connect(self.cutAction,SIGNAL("triggered()"),self.text.cut)

self.copyAction=QAction(QIcon("./image/editcopy.png"),self.tr("复制"),self)

self.copyAction.setShortcut("Ctrl+C")

self.copyAction.setStatusTip(self.tr("复制到粘贴板"))

#self.connect(self.copyAction,SIGNAL("triggered()"),self.text.copy)

self.pasteAction=QAction(QIcon("./image/editpaste.png"),self.tr("粘贴"),self)

self.pasteAction.setShortcut("Ctrl+V")

self.pasteAction.setStatusTip(self.tr("粘贴内容到当前处"))

#self.connect(self.pasteAction,SIGNAL("triggered()"),self.text.paste)

self.aboutAction=QAction(self.tr("关于"),self)

self.connect(self.aboutAction,SIGNAL("triggered()"),self.slotAbout)

def slotNewFile(self):

newWin=MainWindow()

newWin.show()

def slotOpenFile(self):

fileName=QFileDialog.getOpenFileName(self)

if fileName.isEmpty()==False:

if self.text.document().isEmpty():

self.loadFile(fileName)

else:

newWin=MainWindow()

newWin.show()

newWin.loadFile(fileName)

def loadFile(self,fileName):

file=QFile(fileName)

if file.open(QIODevice.ReadOnly|QIODevice.Text):

textStream=QTextStream(file)

while textStream.atEnd()==False:

self.text.append(textStream.readLine())

def slotSaveFile(self):

pass

def slotAbout(self):

QMessageBox.about("about me",self.tr("这是我们的第一个例子"))

def createToolBars(self):

fileToolBar=self.addToolBar("File")

fileToolBar.addAction(self.fileNewAction)

fileToolBar.addAction(self.fileOpenAction)

fileToolBar.addAction(self.fileSaveAction)

editTool=self.addToolBar("Edit")

editTool.addAction(self.copyAction)

editTool.addAction(self.cutAction)

editTool.addAction(self.pasteAction)

def createMenus(self):

fileMenu=self.menuBar().addMenu(self.tr("文件"))

fileMenu.addAction(self.fileNewAction)

fileMenu.addAction(self.fileOpenAction)

fileMenu.addAction(self.fileSaveAction)

fileMenu.addAction(self.exitAction)

editMenu=self.menuBar().addMenu(self.tr("编辑"))

editMenu.addAction(self.copyAction)

editMenu.addAction(self.cutAction)

editMenu.addAction(self.pasteAction)

aboutMenu=self.menuBar().addMenu(self.tr("帮助"))

aboutMenu.addAction(self.aboutAction)

class MainWeb(QtGui.QMainWindow):

def __init__(self, url):

QtGui.QMainWindow.__init__(self)

self.sb=self.statusBar()

self.pbar = QtGui.QProgressBar()

self.pbar.setMaximumWidth(120)

self.wb=QtWebKit.QWebView(loadProgress = self.pbar.setValue, loadFinished = self.pbar.hide, loadStarted = self.pbar.show, titleChanged = self.setWindowTitle)

self.setCentralWidget(self.wb)

self.tb=self.addToolBar("Main Toolbar")

for a in (QtWebKit.QWebPage.Back, QtWebKit.QWebPage.Forward, QtWebKit.QWebPage.Reload):

self.tb.addAction(self.wb.pageAction(a))

self.url = QtGui.QLineEdit(returnPressed = lambda:self.wb.setUrl(QtCore.QUrl.fromUserInput(self.url.text())))

self.tb.addWidget(self.url)

self.wb.urlChanged.connect(lambda u: self.url.setText(u.toString()))

self.wb.urlChanged.connect(lambda: self.url.setCompleter(QtGui.QCompleter(QtCore.QStringList([QtCore.QString(i.url().toString()) for i in self.wb.history().items()]), caseSensitivity = QtCore.Qt.CaseInsensitive)))

self.wb.statusBarMessage.connect(self.sb.showMessage)

self.wb.page().linkHovered.connect(lambda l: self.sb.showMessage(l, 3000))

self.search = QtGui.QLineEdit(returnPressed = lambda: self.wb.findText(self.search.text()))

self.search.hide()

self.showSearch = QtGui.QShortcut("Ctrl+F", self, activated = lambda: (self.search.show() , self.search.setFocus()))

self.hideSearch = QtGui.QShortcut("Esc", self, activated = lambda: (self.search.hide(), self.wb.setFocus()))

self.quit = QtGui.QShortcut("Ctrl+Q", self, activated = self.close)

self.zoomIn = QtGui.QShortcut("Ctrl++", self, activated = lambda: self.wb.setZoomFactor(self.wb.zoomFactor()+.2))

self.zoomOut = QtGui.QShortcut("Ctrl+-", self, activated = lambda: self.wb.setZoomFactor(self.wb.zoomFactor()-.2))

self.zoomOne = QtGui.QShortcut("Ctrl+=", self, activated = lambda: self.wb.setZoomFactor(1))

self.wb.settings().setAttribute(QtWebKit.QWebSettings.PluginsEnabled, True)

self.sb.addPermanentWidget(self.search)

self.sb.addPermanentWidget(self.pbar)

self.wb.load(url)

class MainWindow(QMainWindow):

def __init__(self,parent=None):

super(MainWindow,self).__init__(parent)

self.setWindowTitle(self.tr("钰晴管理平台"))

app.setWindowIcon(QIcon("./image/icon.png"))

#第一个tal

self.tabWidget = QTabWidget(self)

#画一个浏览器

self.verticalLayoutWidget = QtGui.QWidget()

self.verticalLayoutWidget.setGeometry(QtCore.QRect(9, 50, 971, 761))

self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")

self.verticalLayout = QtGui.QVBoxLayout(self.verticalLayoutWidget)

self.verticalLayout.setObjectName("verticalLayout")

url = QtCore.QUrl(‘http://www.baidu.com‘)

wb=MainWeb(url)

self.verticalLayout.addWidget(wb)

#加到tab中

self.tabWidget.addTab(self.verticalLayoutWidget, self.tr("欢迎使用"))

self.tabWidget.setTabsClosable(True)

self.connect(self.tabWidget,SIGNAL("tabCloseRequested(int)"),self.removeTab);

#加到一个区块中

self.stack=QStackedWidget()

self.stack.setFrameStyle(QFrame.Panel|QFrame.Raised)

self.stack.addWidget(self.tabWidget)

self.setCentralWidget(self.stack)

#菜单

toolbar = MyTool()

toolbar.createActions()

toolbar.createMenus()

toolbar.createToolBars()

#停靠窗口1

dock1=QDockWidget(self.tr("停靠窗口1"),self)

dock1.setFeatures(QDockWidget.DockWidgetMovable)

dock1.setAllowedAreas(Qt.LeftDockWidgetArea|Qt.RightDockWidgetArea)

te1=QTextEdit(self.tr("窗口1,可在Main Window的左部和右部停靠,不可浮动,不可关闭"))

dock1.setWidget(te1)

self.addDockWidget(Qt.RightDockWidgetArea,dock1)

#停靠窗口2

dock2=QDockWidget(self.tr("停靠窗口2"),self)

dock2.setFeatures(QDockWidget.DockWidgetFloatable|QDockWidget.DockWidgetClosable)

te2=QTextEdit(self.tr("窗口2,只可浮动"))

dock2.setWidget(te2)

self.addDockWidget(Qt.RightDockWidgetArea,dock2)

#停靠窗口3

dock3=QDockWidget(self.tr("停靠窗口3"),self)

dock3.setFeatures(QDockWidget.AllDockWidgetFeatures)

te3=QTextEdit(self.tr("窗口3,可在Main Window任意位置停靠,可浮动,可关闭"))

dock3.setWidget(te3)

self.addDockWidget(Qt.BottomDockWidgetArea,dock3)

listWidget_1=QListWidget()

listWidget_1.insertItem(0,self.tr("个人基本资料"))

listWidget_1.insertItem(1,self.tr("联系方式"))

listWidget_1.insertItem(2,self.tr("详细信息"))

groupbox1=QGroupBox()

vlayout1=QVBoxLayout(groupbox1)

vlayout1.setMargin(10)

vlayout1.setAlignment(Qt.AlignCenter)

vlayout1.addWidget(listWidget_1)

vlayout1.addStretch()

self.listWidget_2=QListWidget()

self.listWidget_2.insertItem(0,self.tr("个人基本资料"))

self.listWidget_2.insertItem(1,self.tr("联系方式"))

self.listWidget_2.insertItem(2,self.tr("详细信息"))

groupbox2=QGroupBox()

vlayout2=QVBoxLayout(groupbox2)

vlayout2.setMargin(10)

vlayout2.setAlignment(Qt.AlignCenter)

vlayout2.addWidget(self.listWidget_2)

toolbar = QToolBox()

toolbar.addItem(groupbox1,self.tr("我的好友"))

toolbar.addItem(groupbox2,self.tr("黑名单"))

#self.connect(listWidget_1,SIGNAL("currentItemChanged(QListWidgetItem,QListWidgetItem"),

#             self.changePage)

self.connect(listWidget_1,SIGNAL("currentRowChanged(int)"),self.textDialog)

#self.connect(self.stack,SIGNAL("currentChanged(int)"),self.fadeInWidget)

#停靠窗口4

dock4=QDockWidget(self.tr("停靠窗口3"),self)

dock4.setFeatures(QDockWidget.AllDockWidgetFeatures)

dock4.setWidget(toolbar)

self.addDockWidget(Qt.LeftDockWidgetArea,dock4)

QThread.sleep(1)

def search(self):

address = str(self.myurl.text())

if address:

if address.find(‘://‘) == -1:

address = ‘http://‘ + address

self.myurl.setText(address)

self.myweb.load(QUrl(address))

def removeTab(self, index):

if index != -1:

self.tabWidget.removeTab(index)

def textDialog(self,index):

self.add_tab(QCalendarWidget(), title =u‘新增Tab‘, index = index )

#QMessageBox.information(self,"Information",

#                self.tr("填写任意想告诉于用户的信息!"))

def add_tab(self, widget, title, index=None):

try:

if index:

inserted_index = self.tabWidget.insertTab(index, widget, self.tr(title))

else:

inserted_index = self.tabWidget.addTab(widget, self.tr(title))

self.tabWidget.setCurrentIndex(inserted_index)

widget.setFocus()

return inserted_index

except AttributeError, reason:

print reason

print("Widget couldn‘t be added, doesn‘t inherit from ITabWidget")

app=QApplication(sys.argv)

splash=QSplashScreen(QPixmap("./1.jpg"))

splash.show()

app.processEvents()

main=MainWindow()

main.show()

splash.finish(main)

app.connect(app, SIGNAL("lastWindowClosed()")

, app

, SLOT("quit()")

)

app.exec_()

时间: 2024-10-21 09:19:49

pyqt4.1的相关文章

PyQt4开关按钮ToggleButton

PyQt4没有开关按钮部件.但是我们可以使用在特殊状态下的QPushButton部件来创建开关按钮.而所谓的开关按钮就是一个具有按下和未按下两种状态的普通赶牛.用户可以通过单击按钮来切换其开或者关的状态.在一些情形下,这个特性会非常好用. #!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, QtCore class ToggleButton(QtGui.QWidget): def __init

ZetCode PyQt4 tutorial Dialogs

#!/usr/bin/python # -*- coding: utf-8 -*- """ ZetCode PyQt4 tutorial In this example, we receive data from a QtGui.QInputDialog dialog. author: Jan Bodnar website: zetcode.com last edited: October 2011 """ import sys from PyQ

PYQT4.12

from PyQt4 import QtGui from PyQt4 import QtCore from PyQt4.QtCore import (QDate, QFile, QFileInfo, QIODevice, QString, QStringList, QDir, QTextStream, Qt, SIGNAL) if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) startDir = QS

用 pyqt4 编写的一个翻译小工具

有时候我们在开发时遇到一些陌生的英文单词或者不容易看出某些长句的中文意思时该怎么办呢?打开桌面上的翻译软件?打开浏览器里收藏着的翻译网址或者直接贴上百度的搜索框去查?这些方法固然可以,还很常见,但如果是 linux 系统的话,很难找到像 windows 上那些公司级别来开发的成熟的翻译软件,所以只能打开浏览器来查了.浏览器一般都会装上一些翻译插件,比如我常用的 chrome 的 划词翻译,直接用这些插件来进行翻译比起打开一个翻译网站或者百度google搜索要更快,毕竟因为加载的内容更少,但这终究

[Repost]Events and Signals in PyQt4

Reference:http://zetcode.com/gui/pyqt4/eventsandsignals/ Events and Signals in PyQt4 In this part of the PyQt4 programming tutorial, we will explore events and signals occurring in applications. Events All GUI applications are event-driven. Events ar

PyQt4消息窗口

默认情况下,如果我们单击了窗口标题栏上的X标记,窗口就会被关闭.但是有些时候我们想要改变这一默认行为.比如,我们正在编辑的文件内容发生了变化,这时若单击X标记关闭窗口,编辑器就应当但出确认窗口. #!/usr/bin/python # -*- coding:utf-8 -*- import sys from PyQt4 import QtGui class MessageBox(QtGui.QWidget): def __init__(self, parent = None): QtGui.QW

PyQt4关闭窗口

一个显而易见的关闭窗口的方式是但集标题兰有上角的X标记.接下来的示例展示如何用代码来关闭程序,并简要介绍Qt的信号和槽机制. 下面是QPushButton的构造函数,我们将会在下面的示例中使用它. QPushButton(String text, QWiget parent = None) text表示将显示在按钮上的文本.parent是其父对象,用于指定按钮显示在哪个部件中.在我们的示例中,parent是一个QWidget对象. #!/usr/bin/python # -*- coding:u

PyQt4程序图标

程序图标就是一个小图片,通常显示在程序图标的左上角(ubuntu gnome在最上侧). #!/usr/bin/python # -*- coding:utf-8 -*- import sys from PyQt4 import QtGui class Icon(QtGui.QWidget): def __init__(self, parent = None): QtGui.QWidget.__init__(self, parent) self.setGeometry(300, 300, 250

Pyqt4学习笔记-事件和信号

调用应用的 exec_() 方法之后,应用进入主循环.主循环获取事件并把它们发往对象.应用在它的生命周期中产生的不同事件交互.事件主要由用户产生,但是它们也可以由其他方式产生,如:互联网,窗口管理器,定时器,当一个特殊的事件发生时,将发射信号,“槽 ”可以是任何Python调用,当链接到槽的信号发射,该槽将被调用. 在事件模型中,有三个参与者:event source:事件源,事件来源对象代理了事件的目标要处理的任务event object:事件对象,指状态改变的对象,它产生了事件. 事件对象

Windows pyqt4 bat自动转换UI文件-->.pyw文件

/***************************************************************************** * Windows pyqt4 bat自动转换UI文件-->.pyw文件 * 声明: * 由于在Windows下面操作pyqt4,将UI文件转换成.pyw文件是需要到dos窗口去 * 执行pyuic4命令,每次感觉都很麻烦,于是想起可以使用bat文件进行批处理,这 * 样的话,直接双击运行bat文件就行了. * * 2015-12-30 深