【PyQt5-Qt Designer】简易的数字键盘输入

参考如下键盘格式写了一个键盘输入,目前还不能进行运算,后期完善。。。

效果如下:

完整代码:

from PyQt5.QtWidgets import (QApplication,QWidget,QPushButton,QLCDNumber,QFormLayout,QLineEdit,QLabel,QGridLayout)
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt,QTimer,QDateTime,QDate,QTime,QSize
import sys

class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300,300,330,310)
        self.setWindowTitle("数字键盘输入")
        gridLayout = QGridLayout()
        self.display = QLineEdit("0")
        self.display.setFixedSize(QSize(287,40))
        self.display.setReadOnly(True)
        self.display.setAlignment(Qt.AlignRight)
        self.display.setFont(QFont("微软雅黑",14,QFont.Bold))
        gridLayout.addWidget(self.display,0,0,1,4)
        self.showNum = ""

        keys = [‘Clear‘, ‘/‘, ‘*‘, ‘-‘,
                ‘7‘, ‘8‘, ‘9‘, ‘+‘,
                ‘4‘, ‘5‘, ‘6‘, ‘‘,
                ‘1‘, ‘2‘, ‘3‘, ‘Enter‘,
                ‘0‘, ‘‘, ‘.‘, ‘‘]
        position = [(0, 0), (0, 1), (0, 2), (0, 3),
                    (1, 0), (1, 1), (1, 2), (1, 3),
                    (2, 0), (2, 1), (2, 2), (2, 2),
                    (3, 0), (3, 1), (3, 2), (3, 3),
                    (4, 0), (4, 1), (4, 2), (4, 3), ]
        for item in range(len(keys)):
            btn = QPushButton(keys[item])
            btn.setFixedSize(QSize(60, 40))
            btn.setFont(QFont("微软雅黑",12,QFont.Bold))
            btn.clicked.connect(self.btnClicked)
            if keys[item] == "+":
                gridLayout.addWidget(btn, 2, 3, 2, 1)
                btn.setFixedSize(QSize(60, 90))
            elif keys[item] == "Enter":
                gridLayout.addWidget(btn, 4, 3, 2, 1)
                btn.setFixedSize(QSize(60, 90))
            elif keys[item] == "0":
                gridLayout.addWidget(btn, 5, 0, 1, 2)
                btn.setFixedSize(QSize(142, 40))
            elif keys[item] == "":
                continue
            else:
                gridLayout.addWidget(btn, position[item][0]+1, position[item][1], 1, 1)
        self.setLayout(gridLayout)

    def btnClicked(self):
        sender = self.sender()
        symbols = ["Clear","/","*","-","+","Enter"]
        if sender.text() not in symbols:
            self.showNum += sender.text()
            self.display.setText(self.showNum)
        elif sender.text() == "Clear":
            self.display.setText("0")
            self.showNum = ""

if __name__ == ‘__main__‘:
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

原文地址:https://www.cnblogs.com/XJT2018/p/10226695.html

时间: 2024-10-08 05:29:01

【PyQt5-Qt Designer】简易的数字键盘输入的相关文章

痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PyQt GUI构建工具Qt Designer. 痞子衡开博客至今已有好几年,一直以嵌入式开发相关主题的文章为主线,偶尔穿插一些其他技术或工具的介绍,前段时间因为要做一个跟恩智浦MCU启动相关的上位机工具 NXP-MCUBootUtility,网上搜索对比了几个Python下的GUI框架,最终选择了wxPython这个成熟稳定的GUI库,从而接触到wxFormBuilder这个配套wxPython使用的GUI构建工具.苦于网上关于该

Java-数组:能否用增强for循环实现把键盘输入的数字循环赋给数组中去?

我看到增强型for很方便,试着能不能用增强型for语句把键盘输入的数字赋值到数组的各个元素中去. //使用增强for 循环的将用户输入的数字赋到数组中去package Lianxi;import java.util.*; public class Lianxi46 {public static void main(String[] args) { Scanner input =new Scanner(System.in); int suZu[]=new int[5]; //定义长度为5的数组 f

shell 如何判断用户从键盘输入的变量是否为数字

在bash shell当中其实是没有直接的命令去判断变量是否为一个纯数字的,那么我们就是用间接的方法: 问题描述: read -t 30 -p "Please a number: " NUM 使用read命令接受用户从键盘输入一个变量,保存在变量NUM当中,有时候用户瞎输入一通,或者不输入,这对脚本的执行会有影响,顾提前判断一下,较好也是必要的,那么怎么判断呢? 方法一: 将NUM变量做进一步处理: STRING=`echo ${NUM}|sed 'sS^.*[0-9]$SS'` 将$

C语言求S(n) = a+aa+aaa+aaaa+...+aa..a之值,其中a是一个数字,n表示a的位数例如:2+22+222+2222+22222(此时n=5),n和a都从键盘输入。

求S(n) = a+aa+aaa+aaaa+...+aa..a之值,其中a是一个数字,n表示a的位数例如:2+22+222+2222+22222(此时n=5),n和a都从键盘输入. #include <stdio.h> int main() { int n; int a; int sum = 0; int k = 0; int temp = 1; scanf("%d,%d", &n, &a); for (int i = 0; i<n; i++) { k

笔记本键盘输入错乱,字母都变成数字了

笔者用的是笔记本,也是刚发生的事情,笔记本键盘输入错乱,字母都变成数字了.一開始还以为是电脑问题,就重新启动了3遍,还没弄好. 后来研究了一阵,发现这个不是问题,是由于不小心开启了笔记本的小键盘的原因.不敢独享,就把相关解决方法与IT学院站的网友一起分享. 解决方法: 用Fn键(左下角)与数字锁定键(右上角NumLock键)同一时候按,关掉数字小键盘即可了,注意数字指示灯要被关掉才行. @ itxyz.net 这是由于笔记本键盘要比台式机键盘小,它比台式机的少了右边的小数字键盘区,所以笔记本把这

PyQt5(1)——Qt Designer初探

相关环境配置我们就不介绍了(网上有很多教程) Qt Designer 是一款十分强大的GUI工具,生成的文件为 .UI文件  可以通过命令转化为Py文件,简单来说我们可以通过拖拽方式生成界面,在通过简单的一条命令来把生成的UI文件转化为Py文件. 我们先来看以下 designer界面 : 我们一般选择 新建文件   Main windows. 我们来看一下界面主要分为几个区域: 这里我使用PyUIC自动将生成的 UI文件转化为 PY文件.(大家自己上网查找) 点击PyUIC自动生成 py文件 如

3.键盘输入10个数,放到数组中,(1)去除该数组中大于10的数 (2)将该数组中的数字写入到本地文件number.txt中

package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; /* * 3.键盘输入10个数,放到数组中 (1)去除该数组中大于10的数 (2)将该数组中的数字写入到本地文件number.txt中 */ public class Test3 { public static int[] arr = new int[10]; public static void

JAVA 统计键盘输入的一个字符串中的数字,字母大小写和其他。

package Code503; import java.util.Scanner;/*题目:统计键盘输入的一个字符串中的数字,字母大小写和其他. */ public class CodeStringCount { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个字符串"); String input = scanner

js输入密文弹出数字键盘

我们经常被产品要求,在移动端的web页面上的输入框输入密码时要弹出数字键盘,而不是全键盘,这个该怎么实现呢? 1.首先要弹出数字键盘,我们只能把input框的type从password改为tel 2.但经过第一步,输入的内容会变成明文,这时候也要星号显示,改怎么实现 经过一番研究,找到如下的实现方法: 1 function setPass(e) { 2 var target = e.currentTarget, 3 idx = target.selectionStart, 4 val = $(t