博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyQt4 学习笔记-3
阅读量:6848 次
发布时间:2019-06-26

本文共 4939 字,大约阅读时间需要 16 分钟。

hot3.png

1. move方法

import sysfrom PyQt4 import QtGuiclass Example(QtGui.QWidget):        def __init__(self):        super(Example, self).__init__()                self.initUI()            def initUI(self):                lbl1 = QtGui.QLabel('ZetCode', self)        lbl1.move(15, 10)        lbl2 = QtGui.QLabel('tutorials', self)        lbl2.move(35, 40)                lbl3 = QtGui.QLabel('for programmers', self)        lbl3.move(55, 70)                        self.setGeometry(300, 300, 250, 150)        self.setWindowTitle('Absolute')            self.show()

     使用move方法移动创建对象的位置。可以看到在使用Qlabel方法创建了一个label之后,使用期其move方法讲这个label移动到了特定的位置

2. 窗口的layout方法

import sysfrom PyQt4 import QtGuiclass Example(QtGui.QWidget):        def __init__(self):        super(Example, self).__init__()                self.initUI()            def initUI(self):                okButton = QtGui.QPushButton("OK")        cancelButton = QtGui.QPushButton("Cancel")        hbox = QtGui.QHBoxLayout()        hbox.addStretch(1)        hbox.addWidget(okButton)        hbox.addWidget(cancelButton)        vbox = QtGui.QVBoxLayout()        vbox.addStretch(1)        vbox.addLayout(hbox)                self.setLayout(vbox)                    self.setGeometry(300, 300, 300, 150)        self.setWindowTitle('Buttons')            self.show()        def main():        app = QtGui.QApplication(sys.argv)    ex = Example()    sys.exit(app.exec_())if __name__ == '__main__':    main()

            使用addStretch方法来表示按钮在窗口上的位置 QHBoxLayout 和 QVBoxLayout 分别代表横向和纵向的位置。

3. 通过坐标直接放置窗口

import sysfrom PyQt4 import QtGuiclass Example(QtGui.QWidget):        def __init__(self):        super(Example, self).__init__()                self.initUI()            def initUI(self):                grid = QtGui.QGridLayout()        self.setLayout(grid)         names = ['Cls', 'Bck', '', 'Close',                 '7', '8', '9', '/',                '4', '5', '6', '*',                 '1', '2', '3', '-',                '0', '.', '=', '+']                positions = [(i,j) for i in range(5) for j in range(4)]                for position, name in zip(positions, names):                        if name == '':                continue            button = QtGui.QPushButton(name)            grid.addWidget(button, *position)                    self.move(300, 150)        self.setWindowTitle('Calculator')        self.show()        def main():    app = QtGui.QApplication(sys.argv)    ex = Example()    sys.exit(app.exec_())if __name__ == '__main__':    main()

       使用QGridLayout的方法,直接通过坐标来定义Button的位置。注意(i,j)中数字的大小是用来表示先后顺序的,其本身并没有特殊意义。我们稍微修改一下代码:

import sysfrom PyQt4 import QtGuiclass Example(QtGui.QWidget):        def __init__(self):        super(Example, self).__init__()                self.initUI()            def initUI(self):                grid = QtGui.QGridLayout()        self.setLayout(grid)         name_1 = 'Open'        position_1 = (1,1)         name_2 = 'Close'        position_2 = (2,2)                    self.move(300, 150)        self.setWindowTitle('Calculator')        self.show()        def main():    app = QtGui.QApplication(sys.argv)    ex = Example()    sys.exit(app.exec_())if __name__ == '__main__':    main()
import sysfrom PyQt4 import QtGuiclass Example(QtGui.QWidget):        def __init__(self):        super(Example, self).__init__()                self.initUI()            def initUI(self):                grid = QtGui.QGridLayout()        self.setLayout(grid)         name_1 = 'Open'        position_1 = (1,1)         name_2 = 'Close'        position_2 = (3,3)                    self.move(300, 150)        self.setWindowTitle('Calculator')        self.show()        def main():    app = QtGui.QApplication(sys.argv)    ex = Example()    sys.exit(app.exec_())if __name__ == '__main__':    main()

         在运行之后我们得到了相同的窗口按钮布局,这说明,数字式排序用,而不是直接定位(太麻烦了。。。)

(关于Zip,新手可参见 http://www.cnblogs.com/BeginMan/archive/2013/03/14/2959447.html)    

import sysfrom PyQt4 import QtGuiclass Example(QtGui.QWidget):        def __init__(self):        super(Example, self).__init__()                self.initUI()            def initUI(self):                title = QtGui.QLabel('Title')        author = QtGui.QLabel('Author')        review = QtGui.QLabel('Review')        titleEdit = QtGui.QLineEdit()        authorEdit = QtGui.QLineEdit()        reviewEdit = QtGui.QTextEdit()        grid = QtGui.QGridLayout()        grid.setSpacing(10)        grid.addWidget(title, 1, 0)        grid.addWidget(titleEdit, 1, 1)        grid.addWidget(author, 2, 0)        grid.addWidget(authorEdit, 2, 1)        grid.addWidget(review, 3, 0)        grid.addWidget(reviewEdit, 3, 1, 5, 1)                self.setLayout(grid)                 self.setGeometry(300, 300, 350, 300)        self.setWindowTitle('Review')            self.show()        def main():        app = QtGui.QApplication(sys.argv)    ex = Example()    sys.exit(app.exec_())if __name__ == '__main__':    main()

  

         依然是使用了Grid方法

转载于:https://my.oschina.net/u/2362565/blog/633158

你可能感兴趣的文章
源码安装http的-2.4.4
查看>>
One_install postifx is shell
查看>>
Java await wait sleep yield
查看>>
航空制造业信息化顶层架构部分成果展示
查看>>
httpServletRequest中的流只能读取一次的原因
查看>>
iOS10以后相机、相册等授权问题
查看>>
转:iptables防火墙原理详解
查看>>
MySLQ排序后标记排行
查看>>
RAID
查看>>
【高德地图API】从零开始学高德JS API(六)——坐标转换
查看>>
最全的Markdown语法
查看>>
正则表达式
查看>>
Angular企业级开发(1)-AngularJS简介
查看>>
如何查看自己电脑系统的安装日期-Window上
查看>>
继承Runnable 实现Synchronized 同步锁
查看>>
好书推荐
查看>>
tomcat 连接数设置(转)
查看>>
linux下定时执行任务的方法
查看>>
Activity 之生命周期
查看>>
Windows压缩包安装MySQL
查看>>