PyQtPython-PyQt5界面可视化

Pyqt5利用QGridLayout实现计算器界面设计

2018-03-04  本文已影响127人  酉月十一

本文主要介绍利用QGridLayout实现计算器界面设计,详细代码如下

from PyQt5.QtWidgetsimport *

import sys

class WinForm(QWidget):

    def __init__(self):

        super(WinForm, self).__init__(parent=None)

        self.initUI()

      def initUI(self):

'''1.创建QGridLayout布局,并设置为窗口的布局'''

            grid = QGridLayout()

            self.setLayout(grid)

'''2.创建按钮的标签列表'''

            names = ['Cls', 'Back', '', 'Close', '7', '8', '9', '/', '4', '5', '6', '*', '1', '2', '3', '-', '0', '.', '=',

                '+']

'''3.在网格中构建一个二维positions列表'''

                positions = [(i, j)for iin range(5)for jin range(4)]

'''4.创建按钮,并通过addWidget()方法添加到布局中

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表

'''# name:依次遍历names赋值给name;position:依次遍历列表positions赋值(元组)给position

                    for position, namein zip(positions, names):

                            if name =='':

                                continue

                                print(name,*position)

                            button = QPushButton(name)

                            grid.addWidget(button, *position)

                            self.move(300, 150)

                             self.setWindowTitle('简易计算器')

if __name__ =='__main__':

app = QApplication(sys.argv)

demo = WinForm()

demo.show()

sys.exit(app.exec_())

position是一个表示位置的元组

当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用*和**前缀。这种方法在函数需要获取可变数量的参数的时候特别有用。

所以在此处使用*position

[注意]

[1] 由于在args变量前有*前缀,所有多余的函数参数都会作为一个元组存储在args中。如果使用的是**前缀,多余的参数则会被认为是一个字典的健/值对

[2] 对于def func(*args):,*args表示把传进来的位置参数存储在tuple(元组)args里面。例如,调用

func(1, 2, 3)args就表示(1, 2, 3)这个元组

[3] 对于def func(**args):,**args表示把参数作为字典的健-值对存储在dict(字典)args里面。例如,调用

func(a='I', b='am', c='wcdj')args就表示{'a':'I', 'b':'am', 'c':'wcdj'}这个字典

[4] 注意普通参数与*和**参数公用的情况,一般将*和**参数放在参数列表最后。

界面展示:

上一篇 下一篇

猜你喜欢

热点阅读