先给出两个初学者的入门网址:
http://www.riverbankcomputing.co.uk/software/pyqt/intro
http://www.cs.usfca.edu/~afedosov/qttut/
1.窗体(QWidget、QMainWindow、QDialog)之间的区别
QWidget类是所有用户界面对象的基类。窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。
QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态变得更容易。继承使创建当用户点击菜单项或者工具条按钮时被调用的槽成为可能。你也可以使用Qt设计器来创建主窗口。
QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模式的也可以是非模式的。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled()。
QDialog 是最普通的顶级窗口。不被嵌入到一个父窗口部件的窗口部件被叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管如果使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰)。在Qt中,QMainWindow和和不同的QDialog的子类是最普通的顶级窗口。
如果是顶级对话框,那就基于QDialog创建,如果是主窗体,那就基于QMainWindow,如果不确定,或者有可能作为顶级窗体,或有可能嵌入到其他窗体中,则基于QWidget创建。当然了,实际中,你还可以基于任何其他部件类来派生。看实际需求了,比如QFrame、QStackedWidget等等。
全局变量是一个使用有争议的变量。首先,全局变量方便了变量之间的共享。但同时也带来了许多问题:降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。比如不同模块之间都可以自由的访问全局变量,可能会导致全局变量的不可预知性,当程序猿A修改了全局变量global_x的值,可能其他使用全局变量的地方就会出现错误,然而这种错误往往是很难发现和更正的。所以,我们应该尽量避免使用全局变量,但是全局变量的好处也是很明显的,所以某些时候全局变量能够解决局部变量很难解决的问题,所以要合理使用全局变量。
全局变量的使用有2中方式。第一种方式为:声明法,把要定义的全局变量直接定义在所使用文件的开始;第二种方法为:模块法,把要定义的全局变量单独定义在一个文件中,这种方法适用于不同文件之间的变量共享。下面对这两种方式分别进行讲解:
(1).声明法(直接定义在所使用文件的开始)
使用方法:首先在所使用的文件开头定义全局变量variable;然后在具体的使用函数中进行全局变量说明: global variable,因为只有在函数内经过说明的全局变量才能使用,否则系统将该变量视为局部变量。
注:将全局变量大写便于识别,eg:CONSTANT = 0
eg:
#test1.py
CONSTANT = 0 #定义全局变量
def modifyConstant() :
global CONSTANT #全局变量的声明
print CONSTANT
CONSTANT += 1
return
if __name__ == '__main__' :
modifyConstant()
print CONSTANT #在主函数中使用全局变量
(2).模块法(推荐使用这种方法)
使用方法:将需要定义的全局变量单独定义在一个文件中,当使用全局变量的时候,只需将该文件给import进来即可。然后通过类似下面的方法调用:global_test1.gl_1
eg:
#全局变量所在文件的定义
#global_test1.py
gl_1 = 'hello'
gl_2 = 'world'
在其它模块test2.py中使用
#test2.py
import global_test1
def hello_world()
print global_test1.gl_1, global_test1.gl_2
def fun1()
global_test1.gl_1 = 'HELLO'
global_test1.gl_2 = 'WORLD'
if __name__ == '__main__' :
fun1()
hello_world()
3.图片的设置
pyqt中如果