目标

画一个 <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. 三星二级菜单_你知道三星 Galaxy 手机中的这个隐藏菜单吗?
  2. smarty---设置
  3. 基于FPGA的DES加解密系统开发(5000字详细介绍欢迎订阅)
  4. 三维动画制作的基本流程
  5. Android得到一个闹钟在第三方
  6. 毕业这几年的嵌入式开发之路
  7. source insight 4.0 无法同步文件问题
  8. Jquery操作对控件的取值、赋值
  9. input标签与图片按钮水平对齐的解决方法
  10. IMP-00009: 导出文件异常结束 imp
  11. 计蒜客-最后一个单词的长度
  12. Git 和 Github的关系
  13. rtp h264注意点(FU-A分包方式说明)
  14. CNN LeNet-5 AlexNet VGG简介
  15. 如何查看JDK版本信息
  16. 江湖魔头-BugkuCTF平台
  17. 基于STC单片机串口扩展网络通信的应用
  18. docker部署jpress详细版本
  19. 目前国内的高频交易系统的延迟做到了什么水平?
  20. 固定在底部|锚定在底部

热门文章

  1. matlab隐函数画三维图,MATLAB绘制3D隐函数曲面的几种方法
  2. 贴片电阻简介:功率大小与尺寸对应表
  3. Aspose.Word企业案例:Charity Auction Organizer 使用 Aspose.Words 开发自定义邮件合并引擎
  4. ajax在加拿大什么位置,加国小常识 教你读懂加拿大地址邮编
  5. Linux常用命令(一) —— 开关机命令shutdown、远程登录命令ssh、远程拷贝文件命令scp
  6. 公众号暂停更新通知最新文案排版布局
  7. Vue中如何进行屏幕录制与直播推流
  8. matlab显示wav波形图,matlab 分析wav波形
  9. Python开发环境安装教程
  10. java在jvm虚拟机中是如何实现多态的?