PyQt基本操作

来源:互联网 发布:windows7淘宝 编辑:程序博客网 时间:2024/05/29 11:43

由于最近学校布置的大作业太多,只要把cocos2d-x3.0的教程先搁置一下,毕竟作业要紧,为了大型应用软件课的大作业,决定学习PyQt(因为对透明空间的使用优于wxpython和原生的tkinter)

下方是我找到的一个博文,转发过来供大家参考学习。

源地址:http://www.cnblogs.com/rollenholt/archive/2011/11/16/2251904.html

PyQt基本操作

PyQt的简介和基本安装方法读者可以自行google解决。先声明,本文章教基础,参考《征服Python》相关章节。不过不得不说,pyQt的教程真的好少,╮(╯▽╰)╭,悲催,大家有什么好的资料推荐一下,谢谢了。

先建立一个基本的界面看看:

?
1
2
3
4
5
6
7
8
9
10
11
12
importsys
fromPyQt4import QtCore, QtGui
classMyWindow( QtGui.QMainWindow ):
    def__init__(self):
        QtGui.QMainWindow.__init__(self)
        self.setWindowTitle("PyQt")
        self.resize(300,200)
app=QtGui.QApplication( sys.argv )
mywindow=MyWindow()
mywindow.show()
app.exec_()
    

 运行结果:

然后我们添加一个标签:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#coding=utf-8
#标签的使用
importsys
fromPyQt4importQtCore, QtGui
classWindow( QtGui.QMainWindow ):
    def__init__(self):
        super( Window, self).__init__()
        self.setWindowTitle("hello")
        self.resize(200,300)
        #添加标签
        label=QtGui.QLabel("label")
        label.setAlignment( QtCore.Qt.AlignCenter )
        self.setCentralWidget( label )
app=QtGui.QApplication( sys.argv )
demo=Window()
demo.show()
app.exec_()

 效果如下:

基本布局:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#coding=gbk
importsys
fromPyQt4importQtCore, QtGui
classWindow( QtGui.QWidget ):
    def__init__(self):
        super( Window, self).__init__()
        self.setWindowTitle("hello")
        self.resize(500,500)
         
        hBoxLayout1=QtGui.QHBoxLayout()
         
        label1=QtGui.QLabel("Label1")
        label2=QtGui.QLabel("Label2")
        label3=QtGui.QLabel("Label3")
        label4=QtGui.QLabel("Label4")
        label5=QtGui.QLabel("Label5")
        #---------添加表格布局
        gridLayout=QtGui.QGridLayout()
          
        gridLayout.addWidget( label1 , 0,0)
        gridLayout.addWidget( label2 , 0,1)
        gridLayout.addWidget( label3 , 0,2)
        gridLayout.addWidget( label4 , 1,0)
        gridLayout.addWidget( label5 , 1,1)
          
        self.setLayout( gridLayout )       
#-------添加水平布局
#        hBoxLayout1.addWidget( label1 )
#        hBoxLayout1.addWidget( label2 )
#        hBoxLayout1.addWidget( label3 )
#        hBoxLayout1.addWidget( label4 )
#        hBoxLayout1.addWidget( label5 )
#       
#        self.setLayout( hBoxLayout1 )
 
#---------添加垂直布局
#        vBoxLayout = QtGui.QVBoxLayout()
#        vBoxLayout.addWidget( label1 )
#        vBoxLayout.addWidget( label2 )
#        vBoxLayout.addWidget( label3 )
#        vBoxLayout.addWidget( label4 )
#        vBoxLayout.addWidget( label5 )
#       
#        self.setLayout( vBoxLayout )
#       
 
 
app=QtGui.QApplication( sys.argv )
demo=Window()
demo.show()
app.exec_()

 效果:

按钮基本使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#coding=utf-8
#按钮操作
 
importsys
fromPyQt4importQtGui, QtCore
classWindow( QtGui.QWidget ):
    def__init__(self):
        super( Window, self).__init__()
        self.setWindowTitle("hello")
        self.resize(500,500)
        gridlayout=QtGui.QGridLayout()
         
        button1=QtGui.QPushButton("button1")
        gridlayout.addWidget( button1, 0,0,1,3)
         
        button2=QtGui.QPushButton("button2")
        button2.setFlat(True)
        gridlayout.addWidget( button2, 1,1,1,3)
        self.setLayout( gridlayout )
app=QtGui.QApplication( sys.argv )
demo=Window()
demo.show()
app.exec_()

 

不过按钮2当你点击的时候才显示出来哦

现在看看单行文本和多行文本

?
#coding=utf-8
importsys
fromPyQt4importQtGui, QtCore
classWindow( QtGui.QWidget ):
    def__init__(self):
        super( Window, self).__init__()
        self.setWindowTitle("hello")
        self.resize(500,500)
         
        gridlayout=QtGui.QGridLayout()
         
        str="hello"  #这里中文乱码,纠结
        label=QtGui.QLabel(str)
        label.setAlignment( QtCore.Qt.AlignCenter )
         
        textFile=QtGui.QLineEdit()
        gridlayout.addWidget( label, 0,0)
        gridlayout.addWidget( textFile )
         
        passwordFile=QtGui.QLineEdit()
        passwordFile.setEchoMode( QtGui.QLineEdit.Password )
        gridlayout.addWidget( passwordFile )
         
        textArea=QtGui.QTextEdit()
        textArea.setText("asdasda")
        gridlayout.addWidget( textArea )
         
         
        self.setLayout( gridlayout )
app=QtGui.QApplication( sys.argv )
window=Window()
window.show()
app.exec_()

 

单选和复选框

?
importsys
fromPyQt4importQtGui, QtCore
classWindow( QtGui.QWidget ):
    def__init__(self):
        super( Window, self).__init__()
        self.setWindowTitle("hello")
        self.resize(500,500)
        hboxlayout=QtGui.QHBoxLayout()
         
        self.radio1=QtGui.QRadioButton("radio1")
        self.radio2=QtGui.QRadioButton("radio2")
        self.radio3=QtGui.QRadioButton("radio3")
        self.radio1.setChecked(True)
         
        hboxlayout.addWidget(self.radio1 )
        hboxlayout.addWidget(self.radio2 )
        hboxlayout.addWidget(self.radio3 )
         
        checkbox1=QtGui.QCheckBox("checkbox1")
        checkbox2=QtGui.QCheckBox("checkbox2")
        checkbox3=QtGui.QCheckBox("checkbox3")
        checkbox1.setChecked(True)
         
        hboxlayout.addWidget( checkbox1 )
        hboxlayout.addWidget( checkbox2 )
        hboxlayout.addWidget( checkbox3 )
 
        self.button=QtGui.QPushButton("Ok")
        hboxlayout.addWidget(self.button )
         
        self.connect(self.button, QtCore.SIGNAL( 'clicked()'),self.OnButton )
         
        self.setLayout( hboxlayout )
    defOnButton(self):
        ifself.radio2.isChecked():
            self.radio2.setText("haha")
         
app=QtGui.QApplication( sys.argv )
win=Window()
win.show()
app.exec_()

 

现在看看菜单:

?
#coding=utf-8
#菜单事件
importsys
fromPyQt4importQtGui, QtCore
classWindow( QtGui.QMainWindow ):
    def__init__(self):
        super( Window, self).__init__()
        self.setWindowTitle("hello")
        self.resize(500,500)
         
         
         
        menubar=self.menuBar()
        self.file=menubar.addMenu( '&File')
        open=self.file.addAction('Open')
        self.connect(open, QtCore.SIGNAL( 'triggered()'),self.OnOpen )
         
        save=self.file.addAction('Save')
        self.connect( save, QtCore.SIGNAL( 'triggered()'),self.OnSave )
        self.file.addSeparator()
        close=self.file.addAction("Close")
        self.connect( close, QtCore.SIGNAL( 'triggered()'),self.OnClose )
         
        self.label=QtGui.QLabel("this is a  google test" )
        self.label.setAlignment( QtCore.Qt.AlignCenter )
        self.setCentralWidget(self.label )
         
    defOnOpen(self):
        self.label.setText("open")
    defOnSave(self):
        self.label.setText("save")
    defOnClose(self):
        self.close()
    defcontextMenuEvent(self, event ):
       self.file.exec_( event.globalPos() )
app=QtGui.QApplication( sys.argv )
win=Window()
win.show()
app.exec_()

 

点击右键也可以看看哦

现在是对话框的代码:

?
#coding=utf-8
#对话框
importsys
fromPyQt4importQtGui, QtCore
classWindow( QtGui.QWidget ):
    def__init__(self):
        super( Window, self).__init__()
        self.setWindowTitle("hello")
        self.resize(500,500)
         
        gridlayout=QtGui.QGridLayout()
         
        self.AboutButton=QtGui.QPushButton("About")
        gridlayout.addWidget(self.AboutButton,0,0)
        self.AboutQtButton=QtGui.QPushButton("AboutQt")
        gridlayout.addWidget(self.AboutQtButton,0,1)
        self.CriticalButton=QtGui.QPushButton("CriticalButton")
        gridlayout.addWidget(self.CriticalButton,1,0)
        self.InfoButton=QtGui.QPushButton("Info")
        gridlayout.addWidget(self.InfoButton,1,1)
        self.QuestionButton=QtGui.QPushButton("Question")
        gridlayout.addWidget(self.QuestionButton,2,0)
        self.WarningButton=QtGui.QPushButton("Warning")
        gridlayout.addWidget(self.WarningButton,2,1)
         
        spacer=QtGui.QSpacerItem(200,80)
        gridlayout.addItem( spacer, 3,1,1,5)
        self.setLayout( gridlayout )
         
        self.connect(self.AboutButton, QtCore.SIGNAL( 'clicked()'),self.OnAboutButton )
        self.connect(self.AboutQtButton, QtCore.SIGNAL( 'clicked()'),self.OnAboutQtButton )
        self.connect(self.CriticalButton, QtCore.SIGNAL( 'clicked()'),self.OnCriticalButton )
        self.connect(self.InfoButton, QtCore.SIGNAL( 'clicked()'),self.OnInfoButton )
        self.connect(self.QuestionButton, QtCore.SIGNAL( 'clicked()'),self.OnQuestionButton )
        self.connect(self.WarningButton, QtCore.SIGNAL( 'clicked()'),self.OnWarningButton )
         
    defOnAboutButton(self):
        QtGui.QMessageBox.about(self,'PyQt',"About")
         
    defOnAboutQtButton(self):
        QtGui.QMessageBox.aboutQt(self,"PyQt")
         
    defOnCriticalButton(self):
        r=QtGui.QMessageBox.critical(self,"PyQT","CriticalButton", QtGui.QMessageBox.Abort,
                                   QtGui.QMessageBox.Retry, QtGui.QMessageBox.Ignore )
        ifr==QtGui.QMessageBox.Abort:
            self.setWindowTitle("Abort")
        elifr==QtGui.QMessageBox.Retry:
            self.setWindowTitle("Retry")
        elifr==QtGui.QMessageBox.Ignore:
            self.setWindowTitle("Ignore")
        else:
            pass
         
    defOnInfoButton(self):
        QtGui.QMessageBox.information(self,"Pyqt","information")
         
    defOnQuestionButton(self):
        r=QtGui.QMessageBox.question(self,"PyQt","Question", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No, QtGui.QMessageBox.Cancel )
         
    defOnWarningButton(self):
        r=QtGui.QMessageBox.warning(self,"PyQT","warning", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No )
     
         
app=QtGui.QApplication( sys.argv )
win=Window()
win.show()
app.exec_()

 

现在是文件选择,字体选择,颜色选择框:

?
#coding=utf-8
importsys
fromPyQt4importQtGui, QtCore
classWindow( QtGui.QWidget ):
    def__init__(self):
        super( Window, self).__init__()
        self.setWindowTitle("hello")
        self.resize(500,500)
         
        gridlayout=QtGui.QGridLayout()
         
        self.button1=QtGui.QPushButton("File")
        self.button2=QtGui.QPushButton("Font")
        self.button3=QtGui.QPushButton("Color")
        gridlayout.addWidget(self.button1 )
        gridlayout.addWidget(self.button2 )
        gridlayout.addWidget(self.button3 )
        spacer=QtGui.QSpacerItem(200,80)
        gridlayout.addItem( spacer, 3,1,1,3)
        self.setLayout( gridlayout )
         
        self.connect(self.button1, QtCore.SIGNAL( 'clicked()'),self.OnButton1 )
        self.connect(self.button2, QtCore.SIGNAL( 'clicked()'),self.OnButton2 )
        self.connect(self.button3, QtCore.SIGNAL( 'clicked()'),self.OnButton3 )
         
         
    defOnButton1(self):
        fileName=QtGui.QFileDialog.getOpenFileName(self,'Open')
        ifnotfileName.isEmpty():
            self.setWindowTitle( fileName )   
         
    defOnButton2(self):
        font, ok =QtGui.QFontDialog.getFont()
        ifok:
            self.setWindowTitle( font.key() )
     
    defOnButton3(self):
        color=QtGui.QColorDialog.getColor()
        ifcolor.isValid():
            self.setWindowTitle( color.name() )
         
app=QtGui.QApplication( sys.argv )
win=Window()
win.show()
app.exec_()

 

现在还是对话框:

?
#coding=utf-8
importsys
fromPyQt4importQtGui, QtCore
 
classMyDialog( QtGui.QDialog ):
    def__init__(self):
        super( MyDialog, self).__init__()
         
        self.setWindowTitle("Dialog")
        self.gridlayout=QtGui.QGridLayout()
         
        self.label=QtGui.QLabel("Please Input:" )
        self.textField=QtGui.QLineEdit()
        self.okButton=QtGui.QPushButton("OK")
        self.cancalButton=QtGui.QPushButton("Cancel")
         
        self.gridlayout.addWidget(self.label , 0,0)
        self.gridlayout.addWidget(self.textField , 0,1)
        self.gridlayout.addWidget(self.cancalButton , 0,2)
        self.gridlayout.addWidget(self.okButton , 0,3)
         
        self.connect(self.okButton, QtCore.SIGNAL( 'clicked()'),self.OnOk )
        self.connect(self.cancalButton, QtCore.SIGNAL( 'clicked()'),self.OnCancel )
         
        self.setLayout(self.gridlayout )
         
    defOnOk(self):
        self.text=self.textField.text()
        self.done(1)
    defOnCancel(self):
        self.done(0)
         
 
classWindow( QtGui.QWidget ):
    def__init__(self):
        super( Window, self).__init__()
        self.setWindowTitle("hello")
        self.resize(400,300)
         
        hboxlayout=QtGui.QGridLayout()
        self.creatDialogButton=QtGui.QPushButton("Create a new Dialog" )
        hboxlayout.addWidget(self.creatDialogButton )
        self.setLayout( hboxlayout )
         
        self.connect(self.creatDialogButton, QtCore.SIGNAL( 'clicked()'),self.OnButton )
         
    defOnButton(self):
        dialog=MyDialog()
        r=dialog.exec_()
        ifr:
            self.creatDialogButton.setText( dialog.text )
         
         
app=QtGui.QApplication( sys.argv )
win=Window()
win.show()
app.exec_()

 

最后一个是利用Designer写的

利用他设计一个简单的界面,只有一个标签和一个文本框

代码如下:

?
#coding=utf-8
importsys
fromPyQt4importQtGui, QtCore, uic
 
classMyDialog( QtGui.QDialog ):
    def__init__(self):
        super( MyDialog, self).__init__()
        uic.loadUi("res.ui",self)
 
classMyWindow( QtGui.QWidget ):
    def__init__(self):
        super( MyWindow, self).__init__()
        self.setWindowTitle("hello")
        self.resize(300,200)
         
        gridlayout=QtGui.QGridLayout()
        self.button=QtGui.QPushButton("CreateDialog")
        gridlayout.addWidget(self.button )
        self.setLayout( gridlayout )
         
        self.connect(self.button, QtCore.SIGNAL( 'clicked()'),self.OnButtoN )
         
    defOnButtoN(self):
        dialog=MyDialog()
        r=dialog.exec_();
        ifr:
            self.button.setText( dialog.textField.text() )
         
app=QtGui.QApplication( sys.argv )
demo=MyWindow()
demo.show()
app.exec_()

0 0
原创粉丝点击