按钮功能和自定义事件– PyQt
首先,让我们创建一个主代码;然后,我们将对其进行修改。我在这里为您提供主代码。并且,所做的修改将带有其说明。让我们做一些编码:
源代码:
import sys from PyQt4 import QtGui, QtCore class layout(QtGui.QMainWindow): def __init__(self): super(layout, self).__init__() self.setGeometry(150, 80,200, 200) self.setWindowTitle("BUTTON FUNC!") self.setWindowIcon(QtGui.QIcon('pythonlogo.png')) self.xyz() def xyz(self): b = QtGui.QPushButton("QUIT", self) b.clicked.connect(QtCore.QCoreApplication.instance().quit) b.resize(100, 100) b.move(60, 50) self.show() def run(): app = QtGui.QApplication(sys.argv) GUI = layout() sys.exit(app.exec_()) run()
输出结果
此输出布局是使用主窗口小部件生成的。QtGui.QMainWindow。self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))方法用于将python徽标粘贴为图标。但是,首先,您需要在代码的同一目录中下载其映像;否则,您也可以在此处传递完整的路径。
QtCore.QCoreApplication.instance()。quit
此方法为按钮小部件生成的click事件调用退出操作。每当我们单击按钮时,界面都将关闭。
修改内容:
1.b.clicked.connect(self.close_it)
将其粘贴到b.clicked.connect(QtCore.QCoreApplication.instance()。quit)的位置。这将调用close_it()函数;用户创建的函数,用于在单击按钮时创建自定义事件。因此,让我们首先创建close_it()函数。在布局类下定义close_it函数时请务必谨慎。
def close_it(self): print(" whooooooaaaa custom's working!!! ") sys.exit()
输出:
此功能将在命令行管理程序窗口上打印消息;并且,该界面将在单击按钮时关闭。
2.self.setWindowTitle(“更改窗口标题”)
将此函数粘贴到close_it()函数主体中的sys.exit()位置。这是我们自定义事件的方式之一。好吧,这是如此基础。但暗示您可以做更多的事情。
输出:
单击按钮,可以观察到GUI标题的更改。标题名称从“按钮功能!”更改为到“更改窗口标题”。
self.setGeometry(90, 70,300, 600)
在相同的close_it()函数下,将此方法置于上述方法的下方。并且,观察主窗口尺寸的变化。
输出:
标题名称随窗口尺寸的变化而变化。因此,您可以通过自定义事件一起执行多个操作。
在这里,我只是建议一些方法。访问上面介绍部分中的链接以了解更多内置按钮方法。如果您想观看其视频教程以通过视觉更好地理解,请访问我的YouTube频道UBVzard。链接很快就会粘贴在评论部分和后续文章中。现在,让我们通过各种内置函数来体验按钮的样式:
3.b.resize(b.sizeHint())
将此粘贴到b.resize(100,100)的位置。观察到我们只是在更改resize()方法的参数。sizeHint()方法根据考虑到同一窗口中其他小部件所覆盖的空间,根据剩余的空间建议PushButton的默认大小。
输出:
4
b.resize(b.minimumSizeHint())
b.move(0,0)
minimumSizeHint()方法建议按钮的最小可能大小。在这里,是上面部分和此处的按钮大小;两者在您看来可能都一样;但是这两个不会产生相同的输出。在sizeHint()的情况下,将其他小部件与按钮一起放置时,您将观察到按钮大小的变化。但是当您使用minimumSizeHint()方法时,按钮大小将保持不变。
在这里,我们还可以在move()方法中更改按钮位置的参数。这将产生如下所示的输出。
该按钮也移到了左上角。当我们传递x=0和y=0作为参数时。
结论:
本文实际上使您了解了使用人员进行的自定义事件可以实现的可能性。您也可以为其他小部件和操作创建自定义事件。伙计们,多练习。这是唯一可以使您对主题坚定地指挥并激发您尝试这些东西的创新想法的唯一方法。