您的位置:首页 > 编程语言 > Qt开发

PyQt4学习

2015-05-30 00:00 309 查看
摘要: PyQt4python

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

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

1

2

3

4

5

6

7

8

9

10

11

12
import

sys


from

PyQt4

import

QtCore,QtGui


class

MyWindow( 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


#标签的使用


import

sys


from

PyQt4

import

QtCore,QtGui


class

Window( 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


import

sys


from

PyQt4

import

QtCore,QtGui


class

Window( 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


#按钮操作


import

sys


from

PyQt4

import

QtGui,QtCore


class

Window( 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


import

sys


from

PyQt4

import

QtGui,QtCore


class

Window( 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_()

单选和复选框

import

sys


from

PyQt4

import

QtGui,QtCore


class

Window( 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)



def

OnButton(

self

):



if

self

.radio2.isChecked():



self

.radio2.setText(

"haha"

)




app

=

QtGui.QApplication( sys.argv )


win

=

Window()


win.show()


app.exec_()

现在看看菜单:

#coding=utf-8


#菜单事件


import

sys


from

PyQt4

import

QtGui,QtCore


class

Window( 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)





def

OnOpen(

self

):



self

.label.setText(

"open"

)



def

OnSave(

self

):



self

.label.setText(

"save"

)



def

OnClose(

self

):



self

.close()



def

contextMenuEvent(

self

,event ):



self

.

file

.exec_( event.globalPos() )


app

=

QtGui.QApplication( sys.argv )


win

=

Window()


win.show()


app.exec_()

点击右键也可以看看哦

现在是对话框的代码:

#coding=utf-8


#对话框


import

sys


from

PyQt4

import

QtGui,QtCore


class

Window( 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 )





def

OnAboutButton(

self

):



QtGui.QMessageBox.about(

self

,

'PyQt'

,

"About"

)





def

OnAboutQtButton(

self

):



QtGui.QMessageBox.aboutQt(

self

,

"PyQt"

)





def

OnCriticalButton(

self

):



r

=

QtGui.QMessageBox.critical(

self

,

"PyQT"

,

"CriticalButton"

,QtGui.QMessageBox.Abort,



QtGui.QMessageBox.Retry,QtGui.QMessageBox.Ignore )



if

r

=

=

QtGui.QMessageBox.Abort:



self

.setWindowTitle(

"Abort"

)



elif

r

=

=

QtGui.QMessageBox.Retry:



self

.setWindowTitle(

"Retry"

)



elif

r

=

=

QtGui.QMessageBox.Ignore:



self

.setWindowTitle(

"Ignore"

)



else

:



pass





def

OnInfoButton(

self

):



QtGui.QMessageBox.information(

self

,

"Pyqt"

,

"information"

)





def

OnQuestionButton(

self

):



r

=

QtGui.QMessageBox.question(

self

,

"PyQt"

,

"Question"

,QtGui.QMessageBox.Yes,QtGui.QMessageBox.No,QtGui.QMessageBox.Cancel )





def

OnWarningButton(

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


import

sys


from

PyQt4

import

QtGui,QtCore


class

Window( 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 )







def

OnButton1(

self

):



fileName

=

QtGui.QFileDialog.getOpenFileName(

self

,

'Open'

)



if

not

fileName.isEmpty():



self

.setWindowTitle(fileName)





def

OnButton2(

self

):



font,ok 

=

QtGui.QFontDialog.getFont()



if

ok:



self

.setWindowTitle(font.key() )





def

OnButton3(

self

):



color

=

QtGui.QColorDialog.getColor()



if

color.isValid():



self

.setWindowTitle(color.name() )




app

=

QtGui.QApplication( sys.argv )


win

=

Window()


win.show()


app.exec_()

现在还是对话框:

#coding=utf-8


import

sys


from

PyQt4

import

QtGui,QtCore


class

MyDialog( 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)





def

OnOk(

self

):



self

.text

=

self

.textField.text()



self

.done(

1

)



def

OnCancel(

self

):



self

.done(

0

)




class

Window( 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 )





def

OnButton(

self

):



dialog

=

MyDialog()



r

=

dialog.exec_()



if

r:



self

.creatDialogButton.setText( dialog.text)






app

=

QtGui.QApplication( sys.argv )


win

=

Window()


win.show()


app.exec_()

最后一个是利用Designer写的

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

代码如下:

#coding=utf-8


import

sys


from

PyQt4

import

QtGui,QtCore,uic


class

MyDialog( QtGui.QDialog ):



def

__init__(

self

):



super

( MyDialog,

self

).__init__()



uic.loadUi(

"res.ui"

,

self

)


class

MyWindow( 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 )





def

OnButtoN(

self

):



dialog

=

MyDialog()



r

=

dialog.exec_();



if

r:



self

.button.setText( dialog.textField.text() )




app

=

QtGui.QApplication( sys.argv )


demo

=

MyWindow()


demo.show()


app.exec_()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PyQt4 python