手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

创建按钮 - 使用PyQt5和Qt Designer创建Python GUI应用程序

[日期:2020-05-07] 来源:Linux公社  作者:醉落红尘 [字体: ]

本PyQt5教程将向您展示如何使用pyqt创建按钮和触发事件。

创建按钮

我们在本教程中的目标是创建一个按钮,该按钮将更改窗口中标签的文本。

要创建按钮,我们将遵循与创建标签时类似的过程。 将以下内容放入我们之前创建的函数中。

    b1 = QtWidgets.QPushButton(win)
    b1.setText("点击这里")
    #b1.move(100,100) to move the button

现在我们有了一个按钮!

创建按钮 - 使用PyQt5和Qt Designer创建Python GUI应用程序

事件与信号

接下来要做的是将我们的按钮链接到某种事件,以便在单击它时发生某些事情。 这为我们带来了一个新的主题,称为事件驱动编程。本文不作详细解释,因为它非常直观,但是PyQt和许多其他GUI框架的工作方式基本上是通过等待事件或信号(术语可互换)的发生。 事件/信号的示例是鼠标悬停在按钮上。 当这些事件发生时,它们会触发要处理的事件(通常是函数或方法)运行。

对于我们的情况,我们需要按一下按钮。 因此,我们将首先创建一个事件触发时可以调用的函数。

def clicked():
    print("点击了") # 当按下按钮时,我们将直接打印“点击了”

接下来,我们将按钮单击事件链接到该函数。 这是通过以下行完成的:

    b1.clicked.connect(clicked)  # 内部主要函数
# 注意:函数参数不需要括号(括号中的内容)

现在,每次我们单击该按钮时,都将打印“点击了”。

面向对象实现

到目前为止,我们已经在函数内部创建了一个非常基本的GUI应用程序。 这对于一个小程序来说很好,但是随着我们的GUI变得更加先进,它的伸缩性将不会很好。 为了解决这个问题,我们将更改当前代码并使用面向对象实现。

我们的代码被转换成以下内容。注意继承的使用。因为我们从QMainWindow继承了之前提到的win,所以我们都将用self替换。

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



class MyWindow(QMainWindow):
    def  __init__(self):
 super(MyWindow,self).__init__()
 self.initUI()



 def button_clicked(self):
    print("点击了")



 def initUI(self):
    self.setGeometry(300, 300, 600, 400)
    self.setWindowTitle("Linux公社www.linuxidc.com")



    self.label = QtWidgets.QLabel(self)
    self.label.setText("www.linuxidc.com")
    self.label.move(50,50)



    self.b1 = QtWidgets.QPushButton(self)
    self.b1.setText("点击这里")
    self.b1.clicked.connect(self.button_clicked)



def window():
    app = QApplication(sys.argv)
    win =  MyWindow()
    win.show()
    sys.exit(app.exec_())



window()

更改标签文字

现在,我们已更改为OOP方法,可以在按下按钮时使用方法button_clicked()来修改标签。

    def  button_clicked(self):
 print("点击了")
 self.label.setText("你刚才点击了按钮")

但是,等等...当我们单击按钮更改标签时,它将截断最后几个字符。

幸运的是,我们可以在更改后通过更新标签大小属性来解决此问题。

让我们添加一个update方法,并从button_clicked()方法中调用它。

class MyWindow(QMainWindow):
    ...
    def clicked_button(self):
        self.label.setText("你刚才点击了按钮")
        self.update()

     ...

    def update(self):
        self.label.adjustSize()

现在我们的标签可以正确调整大小

完整代码

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

class MyWindow(QMainWindow):
    def __init__(self):
        super(MyWindow,self).__init__()
        self.initUI()

    def button_clicked(self):
        self.label.setText("你刚才点击了按钮")
        self.update()

    def initUI(self):
        self.setGeometry(300, 300, 600, 400)
         self.setWindowTitle("Linux公社www.linuxidc.com")

        self.label = QtWidgets.QLabel(self)
        self.label.setText("www.linuxidc.com")
        self.label.move(50,50)

        self.b1 = QtWidgets.QPushButton(self)
        self.b1.setText("点击这里")
        self.b1.clicked.connect(self.button_clicked)

    def update(self):
        self.label.adjustSize()

def window():
    app = QApplication(sys.argv)
    win =  MyWindow()
    win.show()
    sys.exit(app.exec_())

window()

创建按钮 - 使用PyQt5和Qt Designer创建Python GUI应用程序

本文暂时到这里,有补充时再���新,下一节将讲解 如何使用QtDesigner ,敬请关注。

使用PyQt5和Qt Designer创建Python GUI应用程序 系列文章总链接见 https://www.linuxidc.com/search.aspx?where=nkey&keyword=65658

更多Python相关信息见Python 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=17

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2020-05/163132.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款