【问题标题】:How do I make PyQt buttons work?如何使 PyQt 按钮起作用?
【发布时间】:2017-04-17 11:51:26
【问题描述】:

“在 PyQt 中创建一个旨在使当地社区图书馆受益的程序。该程序应该能够在库存列表中添加、编辑和删除图书条目。

包括一个列表小部件、一个行编辑框、一个标签、四个按钮。"

我可以将所有这些东西拖放到 PyQt5 中,将其保存为 .ui,转换为 .py 并在 IDLE 中打开,但是 我如何让按钮做任何事情? 还有,如何做我让我的 IDLE 显示这个框?

This is what the program should look like

这是我保存 .ui 文件并转换为 .py 后留下的代码:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'listoper.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 450)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.listWidget = QtWidgets.QListWidget(self.centralwidget)
        self.listWidget.setGeometry(QtCore.QRect(260, 180, 256, 192))
        self.listWidget.setObjectName("listWidget")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(10, 230, 171, 91))
        self.lineEdit.setObjectName("lineEdit")
        self.Enterbookdetails = QtWidgets.QLabel(self.centralwidget)
        self.Enterbookdetails.setGeometry(QtCore.QRect(20, 200, 101, 16))
        self.Enterbookdetails.setObjectName("Enterbookdetails")
        self.Add = QtWidgets.QPushButton(self.centralwidget)
        self.Add.setGeometry(QtCore.QRect(10, 330, 75, 23))
        self.Add.setObjectName("Add")
        self.Delete = QtWidgets.QPushButton(self.centralwidget)
        self.Delete.setGeometry(QtCore.QRect(110, 330, 75, 23))
        self.Delete.setObjectName("Delete")
        self.Edit = QtWidgets.QPushButton(self.centralwidget)
        self.Edit.setGeometry(QtCore.QRect(10, 370, 75, 23))
        self.Edit.setObjectName("Edit")
        self.Deleteall = QtWidgets.QPushButton(self.centralwidget)
        self.Deleteall.setGeometry(QtCore.QRect(110, 370, 75, 23))
        self.Deleteall.setObjectName("Deleteall")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.Enterbookdetails.setText(_translate("MainWindow", "Enter Book Details:"))
        self.Add.setText(_translate("MainWindow", "Add"))
        self.Delete.setText(_translate("MainWindow", "Delete"))
        self.Edit.setText(_translate("MainWindow", "Edit"))
        self.Deleteall.setText(_translate("MainWindow", "Delete All"))

显然我应该使用以下代码,但我的按钮仍然不起作用:

公斤到磅按钮:

def btn_KtoP_clicked(self):
kilo = float(self.edt_Kilo.text())
pound = (kilo * 2.2)
self.edt_Pounds.setText(str(pound))

磅到公斤按钮:

def btn_PtoK_clicked(self):
pound = float(self.edt_Pounds.text())
kilo = (pound/2.2)
self.edt_Kilo.setText(str(kilo))

【问题讨论】:

    标签: python list button click pyqt5


    【解决方案1】:

    根据您上面的代码,这应该可以工作

    import sys
    from PyQt5 import QtCore, QtWidgets
    from YOUR_UI_MODULE import Ui_MainWindow
    class sow(QtWidgets.QMainWindow):
        def __init__(self, parent=None):
            QtWidgets.QMainWindow.__init__(self, parent)
    
    
            self.main_ui=Ui_MainWindow()
            self.main_ui.setupUi(self)
            self.main_ui.Add.clicked.connect(self.doAdd)
            self.main_ui.Edit.clicked.connect(self.doEdit)
    
    
        def doAdd(self):
            print("do add")
    
        def doEdit(self):
            print("do edit")
    
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        myapp = sow()
        myapp.show()
        sys.exit(app.exec_())
    

    查看 PyQT5 安装附带的示例并从那里开始。 我的位置在这里 C:\Python34\Lib\site-packages\PyQt5\examples

    PyQT 有一个参考文档,我的位于此处 C:/Python32/Lib/site-packages/PyQt4/doc/html/classes.html

    我建议您在进一步编码之前阅读本教程,以便您知道自己在做什么。 http://zetcode.com/gui/pyqt5/firstprograms/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-28
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 2017-07-23
      • 2021-08-07
      相关资源
      最近更新 更多