目标

画一个 <standard> 计算器草稿,并实现相关的基本功能

QtDesigner 画 <standard> 草稿 UI

用 QtDesigner 打开 calculator.ui,先在主窗口中插入 24 个 Pushbutton

将 Pushbutton 上的 text 分别改名,同时按照功能修改每个 button 对应的对象名字。

percentButton ceButton cButton delButton
invButton squareButton sqrtButton devButton
sevenButton eightButton nineButton mulButton
fourButton fiveButton sixButton minusButton
oneButton twoButton threeButton addButton
revButton zeroButton dotButton equalButton

选中所有按钮,点击工具栏中的栅格布局。选中所有按钮,将 sizePolicy 中的 “垂直策略” 设置为 preferred。调整栅格到合适大小。

再次拖拽 6 个 pushButton 到 mainWindow,分别命名为 mcButton, mrButton, maddButton, mminusButton, msButton, mlistButton。然后选中这 6 个按钮,点击工具栏中的水平布局,同时调整布局到合适大小。再次选中这 6 个按钮,将 QPushbutton 属性设置为 Flat。

将 mainWindow 的 menubar 和 statusbar 删除

在 mainWindow 中插入三个 pushButton 和一个 label。并用同样的方法设置水平布局。

控件名称分别命名为 menuButton, modeLabel, topButton, historyButton。同时在 top 和 history 按钮中间插入一个 Horizontal Spacer。将以上 5 个控件的水平策略设置为 Fixed。同时调整 Horizontal Spacer 的长度到合适的数值。

在 mainWindow 中插入一个 lineEdit,命名为 digitDisplay。再插入第二个 lineEdit,命名为 digitUpDisplay:

在 mainWindow 中插入一个 QStackedWidget,并将 第一个 page 命名为 pageStd,第二个 page 命名为 pageProg。这一步是为了方便实现计算器切换 standard / programmer 模式。将刚刚画好的 standard 相关的视图拖拽到 pageStd 中 (即 除了 menu 栏之外的组件)。

点击 centralWidget,将其设置为垂直布局:

选择 pageStd,将 Layout 中的所有 Margin 设置为0,将 layoutStretch 设置为 0,2,1,9:

选择 centralWidget,将 layoutStretch 改为 1,12:

最后,将 mainWindow 最小 size 改为 470*700:

现在 standard 计算器 UI 的草稿就完成了。生成 UI 对应的 py 文件并运行主程序:

pyuic5.exe -o ui_calculator.py calculator.uipython ./calculator.py

运行结果:

功能实现放到下一篇吧.. UI 源码贴在下面。复制之后保存为 .ui 文件就可以用了。

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>470</width><height>700</height></rect></property><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="Preferred"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="minimumSize"><size><width>470</width><height>700</height></size></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralwidget"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="Fixed"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>16777215</height></size></property><property name="layoutDirection"><enum>Qt::LeftToRight</enum></property><layout class="QVBoxLayout" name="verticalLayout_2" stretch="1,12"><item><layout class="QHBoxLayout" name="horizontalLayout_2"><item><widget class="QPushButton" name="menuButton"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="Minimum"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>40</height></size></property><property name="text"><string>menu</string></property></widget></item><item><widget class="QLabel" name="modeLabel"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="Minimum"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>40</height></size></property><property name="text"><string>Standard</string></property></widget></item><item><widget class="QPushButton" name="topButton"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="Minimum"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>40</height></size></property><property name="text"><string>top</string></property></widget></item><item><spacer name="horizontalSpacer"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="Minimum"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>40</height></size></property><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeType"><enum>QSizePolicy::Preferred</enum></property><property name="sizeHint" stdset="0"><size><width>400</width><height>17</height></size></property></spacer></item><item><widget class="QPushButton" name="historyButton"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="Minimum"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>40</height></size></property><property name="text"><string>history</string></property></widget></item></layout></item><item><widget class="QStackedWidget" name="calcModeView"><property name="currentIndex"><number>0</number></property><widget class="QWidget" name="pageStd"><layout class="QVBoxLayout" name="verticalLayout" stretch="0,2,1,9"><property name="spacing"><number>0</number></property><property name="leftMargin"><number>0</number></property><property name="topMargin"><number>0</number></property><property name="rightMargin"><number>0</number></property><property name="bottomMargin"><number>0</number></property><item><widget class="QLineEdit" name="digitUpDisplay"/></item><item><widget class="QLineEdit" name="digitDisplay"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property></widget></item><item><layout class="QHBoxLayout" name="horizontalLayout_3"><property name="spacing"><number>0</number></property><property name="sizeConstraint"><enum>QLayout::SetMinimumSize</enum></property><property name="leftMargin"><number>0</number></property><property name="topMargin"><number>9</number></property><item><widget class="QPushButton" name="mcButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>16777215</height></size></property><property name="text"><string>MC</string></property><property name="flat"><bool>true</bool></property></widget></item><item><widget class="QPushButton" name="mrButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>16777215</height></size></property><property name="text"><string>MR</string></property><property name="flat"><bool>true</bool></property></widget></item><item><widget class="QPushButton" name="maddButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>16777215</height></size></property><property name="text"><string>M+</string></property><property name="flat"><bool>true</bool></property></widget></item><item><widget class="QPushButton" name="mminusButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>16777215</height></size></property><property name="text"><string>M-</string></property><property name="flat"><bool>true</bool></property></widget></item><item><widget class="QPushButton" name="mlistButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>16777215</height></size></property><property name="text"><string>Mlist</string></property><property name="flat"><bool>true</bool></property></widget></item><item><widget class="QPushButton" name="msButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="maximumSize"><size><width>16777215</width><height>16777215</height></size></property><property name="text"><string>MS</string></property><property name="flat"><bool>true</bool></property></widget></item></layout></item><item><layout class="QGridLayout" name="gridLayout_2"><item row="0" column="1"><widget class="QPushButton" name="ceButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>CE</string></property></widget></item><item row="3" column="1"><widget class="QPushButton" name="fiveButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>5</string></property></widget></item><item row="2" column="1"><widget class="QPushButton" name="eightButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>8</string></property></widget></item><item row="0" column="0"><widget class="QPushButton" name="percentButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>%</string></property></widget></item><item row="2" column="0"><widget class="QPushButton" name="sevenButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>7</string></property></widget></item><item row="3" column="2"><widget class="QPushButton" name="sixButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>6</string></property></widget></item><item row="0" column="3"><widget class="QPushButton" name="delButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>del</string></property></widget></item><item row="1" column="3"><widget class="QPushButton" name="devButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>/</string></property></widget></item><item row="5" column="3"><widget class="QPushButton" name="equalButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>=</string></property></widget></item><item row="3" column="3"><widget class="QPushButton" name="minusButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>-</string></property></widget></item><item row="1" column="0"><widget class="QPushButton" name="invButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>1/x</string></property></widget></item><item row="5" column="2"><widget class="QPushButton" name="dotButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>.</string></property></widget></item><item row="4" column="1"><widget class="QPushButton" name="twoButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>2</string></property></widget></item><item row="4" column="2"><widget class="QPushButton" name="threeButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>3</string></property></widget></item><item row="2" column="3"><widget class="QPushButton" name="mulButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>*</string></property></widget></item><item row="1" column="1"><widget class="QPushButton" name="squareButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>x^2</string></property></widget></item><item row="2" column="2"><widget class="QPushButton" name="nineButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>9</string></property></widget></item><item row="1" column="2"><widget class="QPushButton" name="sqrtButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>sqrt(x)</string></property></widget></item><item row="5" column="0"><widget class="QPushButton" name="revButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>+/-</string></property></widget></item><item row="0" column="2"><widget class="QPushButton" name="cButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>C</string></property></widget></item><item row="5" column="1"><widget class="QPushButton" name="zeroButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>0</string></property></widget></item><item row="4" column="0"><widget class="QPushButton" name="oneButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>1</string></property></widget></item><item row="3" column="0"><widget class="QPushButton" name="fourButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>4</string></property></widget></item><item row="4" column="3"><widget class="QPushButton" name="addButton_2"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="text"><string>+</string></property></widget></item></layout></item></layout></widget><widget class="QWidget" name="pageProg"/></widget></item></layout></widget></widget><resources/><connections/>
</ui>

PyQt5 + QtDesigner 复刻 Windows 计算器 (二)相关推荐

  1. PyQt5 + QtDesigner 复刻 Windows 计算器 (一)

    目的 尝试用 PyQt5 以及 QtDesigner 复刻一个 Windows 计算器,加强对 PyQt5 的学习与理解. 目标 尽可能还原 Win11 自带计算器,计划实现 <standard ...

  2. C++ 复刻Windows 10系统的Tripeaks游戏

    Tripeaks介绍 Tripeaks--这个英文名不知道大家有否听说过(应该挺陌生的),这个游戏不知道大家有否了解尝试过. 其实Tripeaks这个游戏在Windows 10(企业版)系统下可能有出 ...

  3. MATLAB | 绘图复刻(二) | 折线图+误差棒+柱状图+散点抖动+灰色背景+图片叠加

    看到gzh R语言ggplot2科研绘图发布了一篇绘图复刻类文章,复刻了: Nature(IF=49.962)文章(Gut microbiota modulates weight gain in mi ...

  4. 试着使用SDL2复刻曹操传(二)

    本篇内容接上篇文章,继续讲述本人使用SDL2复刻曹操传的过程.上次主要实现创建窗口并显示背景图,今次将完善游戏窗口的基本功能,如最大化.拉伸.最小化.然后渲染英雄单位到地图上.为方便窗口的管理,创建G ...

  5. Bombermaaan-最好的开源炸弹人游戏(支持AI人机对战,SFC复刻版)

    关键词:炸弹人源代码,炸弹人AI算法 目录 一.游戏截图 二.基本信息 三.游戏设计介绍 四.道具说明 五.下载 一.游戏截图       二.基本信息 语言:C++ 平台:Windows / Lin ...

  6. C语言初学者复刻经典扫雷小游戏(图形界面,非黑白窗口)(含源码)

    注:除计时器和剩余雷数显示外,其他功能完美还原. 目录 一.程序演示 二.程序信息 1.基础信息 2.前言 3.所需文件 三.代码解析 1.头文件 2.变量声明 3.随机生成雷 4.生成雷位置矩阵 5 ...

  7. U^2-Net跨界肖像画,完美复刻人物细节,GitHub标星2.5K+

    来源 | Jack Cui 头图 | CSDN下载自视觉中国 今年提出的 U^2-Net 显著性检测算法,刷爆了 reddit 和 twitter,号称是 2020 年「地表最强」的静态背景分割算法, ...

  8. GitHub 标星 2.5K+,U^2-Net 跨界肖像画,完美复刻人物细节!

    来源 | Jack Cui 头图 | CSDN下载自视觉中国 今年提出的 U^2-Net 显著性检测算法,刷爆了 reddit 和 twitter,号称是 2020 年「地表最强」的静态背景分割算法, ...

  9. 无人配送的Nuro再融5亿美元,为啥中国复刻者们没它这么火

    雷刚 发自 凹非寺  量子位 报道 | 公众号 QbitAI 复旦才俊朱佳俊的无人车公司Nuro.ai,又完成了新一轮融资. C轮次,5亿美元. 本轮融资由T. Rowe Price Associat ...

最新文章

  1. Linux 系统故障分析与排查
  2. java linkedlist 查找_Java中LinkedList真的是查找慢增删快
  3. linux openssl libcurl库 交叉编译
  4. java 利用dfs生成简单的随机迷宫(效率不高)
  5. Python socket的客户端
  6. ASP.NET中下载文件的几种方法
  7. Java 并发基础——线程安全性
  8. python二维码生成器制作中报错为oserror_Python生成:OSError:[WinError 193]%1不是有效的Win32应用程序...
  9. DENIED Redis is running in protected mode because protected mode is enabled
  10. OpenSessionInViewFilter 的配置及作用
  11. HDU1570 A C【水题】
  12. FFmpeg之获取音视频信息(二十八)
  13. docker 实践(十二)k8s 初体验
  14. 非biztalk项目的部署
  15. 一个rsync自动备份并发信通知的shell脚本
  16. 全景图(三):在Unity3D上实现360°球面投影
  17. Python报错集合篇7-KeyError: 1
  18. SQL语法INSERT INTO_大数据培训
  19. 优秀的PPT模板网站
  20. 光功率 博科交换机_交换机光功率

热门文章

  1. 计算机专业英语名词解释大汇总
  2. 2022年理财规划师前景与现状分析
  3. 基于MOS管的负载开关电路
  4. SQL SERVER 2008 R2 密钥
  5. python库读取cif文件_技术专栏:一篇文章搞懂晶体学信息文件CIF及其获取方法
  6. vs2019安装 assis x
  7. 答案原文及理解解释!!二五鱼水八情深,四六相约二定来是什么意思指什么含义怎么理解答!!
  8. 结算计算机设备维护费的请示,关于购买计算机硬件设备及维修工具的请示
  9. ug区域轮廓铣没有重叠距离_多年大型模具加工经验总结,UG和PM数控加工各方面的优劣势...
  10. 便携式航电实时系统测试平台产品介绍