arq2020 发表于 2022-8-19 13:28

请大家帮忙查看这两种代码的不同

请大家帮忙查看这两种代码的不同,自己刚刚学,不知道这两种代码区别,谢谢各位大佬了



第一种
import sys
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
      MainWindow.setObjectName("MainWindow")
      MainWindow.resize(800, 600)
      self.centralwidget = QtWidgets.QWidget(MainWindow)
      self.centralwidget.setObjectName("centralwidget")
      self.label = QtWidgets.QLabel(self.centralwidget)
      self.label.setGeometry(QtCore.QRect(40, 70, 151, 31))
      self.label.setObjectName("label")
      self.label_2 = QtWidgets.QLabel(self.centralwidget)
      self.label_2.setGeometry(QtCore.QRect(250, 30, 341, 31))
      self.label_2.setObjectName("label_2")

      self.pushButton = QtWidgets.QPushButton(self.centralwidget)
      self.pushButton.setGeometry(QtCore.QRect(230, 430, 75, 23))
      self.pushButton.setObjectName("pushButton")
      self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
      self.pushButton_2.setGeometry(QtCore.QRect(470, 430, 75, 23))
      self.pushButton_2.setObjectName("pushButton_2")
      self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
      self.lineEdit.setGeometry(QtCore.QRect(110, 80, 111, 20))
      self.lineEdit.setText('')
      self.lineEdit.setEchoMode(QtWidgets.QLineEdit.Password)
      self.lineEdit.setObjectName("lineEdit")
      MainWindow.setCentralWidget(self.centralwidget)
      self.menubar = QtWidgets.QMenuBar(MainWindow)
      self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
      self.menubar.setObjectName("menubar")
      self.menu = QtWidgets.QMenu(self.menubar)
      self.menu.setObjectName("menu")
      MainWindow.setMenuBar(self.menubar)
      self.statusbar = QtWidgets.QStatusBar(MainWindow)
      self.statusbar.setObjectName("statusbar")
      MainWindow.setStatusBar(self.statusbar)
      self.actionauout = QtWidgets.QAction(MainWindow)
      self.actionauout.setObjectName("actionauout")
      self.actionexit = QtWidgets.QAction(MainWindow)
      self.actionexit.setObjectName("actionexit")
      self.menu.addAction(self.actionauout)
      self.menu.addAction(self.actionexit)
      self.menubar.addAction(self.menu.menuAction())

      self.retranslateUi(MainWindow)
      self.actionexit.triggered.connect(MainWindow.close)
      self.pushButton_2.clicked.connect(MainWindow.close)
      QtCore.QMetaObject.connectSlotsByName(MainWindow)



    def retranslateUi(self, MainWindow):
      _translate = QtCore.QCoreApplication.translate
      MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
      self.label.setText(_translate("MainWindow", "请输入密码"))
      self.label_2.setText(_translate("MainWindow", "       进入软件需先输入密码"))
      self.pushButton.setText(_translate("MainWindow", "登录"))
      self.pushButton_2.setText(_translate("MainWindow", "取消"))
      self.menu.setTitle(_translate("MainWindow", "不知道密码点我"))
      self.actionauout.setText(_translate("MainWindow", "about"))
      self.actionexit.setText(_translate("MainWindow", "exit"))

if __name__ == '__main__':


    app = QtWidgets.QApplication(sys.argv)
    MainWindow=QtWidgets.QMainWindow()
    Ui=Ui_MainWindow()
    Ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
第二种
from PyQt5.Qt import *
# 重写QWidget类
class Window(QWidget):
    def __init__(self):
      # 初始化参数
      super().__init__()
      # 设置窗口标题
      self.setWindowTitle('文本框的使用')
      # 设置窗口大小
      self.resize(500, 500)
      # 调用函数setup_ui()
      self.setup_ui()

    def setup_ui(self):
      # 定义文本框内容判断的槽函数
      def text_cao(text):
            # 如果文本框内容不为空则按钮可用
            if text != '':
                button.setEnabled(True)

            # 否则按钮不可用
            else:
                button.setEnabled(False)

      # 定义鼠标点击函数
      def Button_Pressed():
            # 获取输入文本内容
            content = le.text()
            # 判断输入文本e内容是否为Sz
            if content == 'hgjd96889':
                # 更改标签显示内容
                label.setText('登录成功')
            else:
                # 更改标签显示内容
                label.setText('登录失败')

            # 展示标签
            label.show()
            # 根据内容调整标签大小
            label.adjustSize()

      # 创建一个标签
      label = QLabel(self)
      # 设置标签文本
      label.setText('标签')
      # 设置标签位置
      label.move(50, 50)
      # 把标签设置为隐藏
      label.hide()

      # 创建一个文本框
      le = QLineEdit(self)
      # 设置文本内容
      le.setText('')
      # 设置文本位置
      le.move(100, 100)

      # 连接文本内容改变信号
      le.textChanged.connect(text_cao)

      # 创建一个按钮
      button = QPushButton(self)
      # 设置按钮内容
      button.setText('登录')
      # 设置按钮位置
      button.move(150, 150)
      # 把按钮设置为不可用
      button.setEnabled(False)
      # 连接鼠标点击函数
      button.pressed.connect(Button_Pressed)


# 启动入口
if __name__ == '__main__':
    # 导入相关模块和包
    import sys

    # 创建一个应用程序
    app = QApplication(sys.argv)
    # 创建一个窗口对象
    window = Window()
    # 展示窗口
    window.show()
    # 传递错误码 消息循环 无限循环 app.exec让程序进入循环
    sys.exit(app.exec_())

arq2020 发表于 2022-8-19 13:50

@xhtdtk 大神帮个忙,谢谢了

grekevin 发表于 2022-8-19 14:08

我也不熟悉pyqt5,仅作参考:
第一种写法是自动生成的,可以提高开发效率;而且很容易实现UI界面代码和逻辑代码的分离
第二种需要一点一点写代码,包括UI代码和功能代码,混合写法当代码量大的时候,写起来不太友好

arq2020 发表于 2022-8-19 14:13

grekevin 发表于 2022-8-19 14:08
我也不熟悉pyqt5,仅作参考:
第一种写法是自动生成的,可以提高开发效率;而且很容易实现UI界面代码和逻 ...

谢谢你,那么这两种代码可以相互融合吗,就是放到一起用{:301_1003:}

grekevin 发表于 2022-8-19 14:26

arq2020 发表于 2022-8-19 14:13
谢谢你,那么这两种代码可以相互融合吗,就是放到一起用

用第一种方式写一个是UI界面实现的类A,然后再写一个继承A类的B类,B类专门实现功能部分(主要就是第二种方法里面的功能方法的实现),所有和界面有关(肉眼看得到的部分)的实现尽量都写在A类。

arq2020 发表于 2022-8-19 14:31

grekevin 发表于 2022-8-19 14:26
用第一种方式写一个是UI界面实现的类A,然后再写一个继承A类的B类,B类专门实现功能部分(主要就是第二种 ...

哦哦,那第一种如果想要获取文本框输入内容来验证是密码正确应该怎么写{:301_1003:}

iawyxkdn8 发表于 2022-8-19 14:49


我也不熟悉pyqt5

grekevin 发表于 2022-8-19 15:00

# class_name:passwordcheckui

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
      MainWindow.setObjectName("MainWindow")
      MainWindow.resize(784, 163)
      self.centralwidget = QtWidgets.QWidget(MainWindow)
      self.centralwidget.setObjectName("centralwidget")
      self.password_edit = QtWidgets.QLineEdit(self.centralwidget)
      self.password_edit.setGeometry(QtCore.QRect(180, 60, 271, 31))
      self.password_edit.setObjectName("password_edit")
      self.password_check_btn = QtWidgets.QPushButton(self.centralwidget)
      self.password_check_btn.setGeometry(QtCore.QRect(520, 60, 191, 31))
      self.password_check_btn.setObjectName("password_check_btn")
      self.password_label = QtWidgets.QLabel(self.centralwidget)
      self.password_label.setGeometry(QtCore.QRect(70, 60, 101, 31))
      self.password_label.setObjectName("password_label")
      MainWindow.setCentralWidget(self.centralwidget)

      self.retranslateUi(MainWindow)
      QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
      _translate = QtCore.QCoreApplication.translate
      MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
      self.password_check_btn.setText(_translate("MainWindow", "密码验证"))
      self.password_label.setText(_translate("MainWindow", "请输入密码:"))


# class_name:passwordcheck

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from passwordcheckui import Ui_MainWindow


class PasswordCheck(Ui_MainWindow):
    def init_function(self):
      self.password_check_btn.clicked.connect(self.password_check_btn_clicked)

    def password_check_btn_clicked(self):
      password = self.password_edit.text()
      if password == str(111):
            print("正确")
      else:
            print("密码错误,请重新输入!")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_window = QMainWindow()
    password_check = PasswordCheck()
    password_check.setupUi(main_window)
    password_check.init_function()
    main_window.show()
    sys.exit(app.exec_())

luxingyu329 发表于 2022-8-19 15:12

我觉得是可以融合到一起写的,我想看pyqt5但是一直没有看,现在还是用tkinter
融合一起试试,备份好代码反正又融合不坏,要不断试错才能成功嘛

arq2020 发表于 2022-8-19 17:10

luxingyu329 发表于 2022-8-19 15:12
我觉得是可以融合到一起写的,我想看pyqt5但是一直没有看,现在还是用tkinter
融合一起试试,备份好代码反 ...

哦,那第一种如果想要获取文本框输入内容来验证是密码正确应该怎么写{:301_1003:}
页: [1]
查看完整版本: 请大家帮忙查看这两种代码的不同