当前位置: 首页 > news >正文

PyQt5 -day3-3 格栅布局 又叫 网格布局

格栅布局的 坐标分布

 

 1 import sys
 2 from PyQt5.QtWidgets import QWidget,QPushButton,QApplication,QGridLayout,QLCDNumber
 3 # 需要导入QGridLayout
 4 
 5 class Example(QWidget):
 6     def __init__(self):
 7         super().__init__()
 8         self.Init_UI()
 9     def Init_UI(self):
10         grid = QGridLayout()
11         self.setLayout(grid)
12 
13         self.setGeometry(300,300,400,300)
14         self.setWindowTitle('格栅布局')
15 
16         self.lcd = QLCDNumber()
17         grid.addWidget(self.lcd,0,0,3,0)
18         # 括号内参数的含义 : 控件,起始行,起始列, 所占行数,所占列数
19         grid.setSpacing(10)
20         #设置每个控件之间的间距,包括水平间距 和 垂直间距
21 
22         names = ['Cls', 'Bc', '', 'Close',
23                  '7', '8', '9', '/',
24                  '4', '5', '6', '*',
25                  '1', '2', '3', '-',
26                  '0', '.', '=', '+']
27         positions = [(i,j)for i in range(4,9)for j in range(4,8)]
28         for position,name in zip(positions,names):
29             print(position)
30 
31             if name == '':
32                 continue
33             button = QPushButton(name)
34             grid.addWidget(button,*position)
35             button.clicked.connect(self.Cli)
36 
37         self.show()
38 
39     def Cli(self):
40         sender = self.sender().text()
41         ls = ['/', '*', '-', '=', '+']
42         if sender in ls:
43             self.lcd.display('A')
44         else:
45             self.lcd.display(sender)
46 
47 if __name__ == '__main__':
48     app = QApplication(sys.argv)
49     ex = Example()
50     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] 注意普通参数与*和**参数公用的情况,一般将*和**参数放在参数列表最后。

转载于:https://www.cnblogs.com/jiayou888888/p/8532754.html

相关文章:

  • 云服务器绑定主机名的正确姿势
  • 第十八天-企业应用架构模式-基本模式
  • 移植之乱谈
  • HTTP 2.0与OkHttp
  • 360旗下公司推出区块链宠物游戏“恋猫”,要和360区块猫竞争吗
  • 项目微管理8 - 流程
  • vue axios ajax
  • z-index
  • 微软最具价值技术专家:我的16年软件开发经验总结
  • 排查Java的内存问题
  • 一对一源码搭建直播平台,需要如何选择云服务器才能带的动
  • Web表现层
  • 物联网技术周报第 128 期: 深度解读:深度学习在IoT大数据和流分析中的应用
  • system(“”start calc“”)
  • bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机
  • 收藏网友的 源程序下载网
  • 【mysql】环境安装、服务启动、密码设置
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java,console输出实时的转向GUI textbox
  • Java基本数据类型之Number
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • js继承的实现方法
  • scala基础语法(二)
  • SpiderData 2019年2月16日 DApp数据排行榜
  • sublime配置文件
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 机器学习中为什么要做归一化normalization
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 算法之不定期更新(一)(2018-04-12)
  • 微服务框架lagom
  • 微信公众号开发小记——5.python微信红包
  • 学习使用ExpressJS 4.0中的新Router
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 进程与线程(三)——进程/线程间通信
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​ArcGIS Pro 如何批量删除字段
  • (3)llvm ir转换过程
  • (超详细)语音信号处理之特征提取
  • (附源码)ssm码农论坛 毕业设计 231126
  • (简单) HDU 2612 Find a way,BFS。
  • (篇九)MySQL常用内置函数
  • (算法设计与分析)第一章算法概述-习题
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET CORE Aws S3 使用
  • .NET Standard 的管理策略
  • .net wcf memory gates checking failed
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET成年了,然后呢?
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .vue文件怎么使用_vue调试工具vue-devtools的安装