返回顶部
首页 > 资讯 > 精选 >PyQt怎么创建自定义QWidget
  • 732
分享到

PyQt怎么创建自定义QWidget

2023-06-14 06:06:28 732人浏览 安东尼
摘要

小编给大家分享一下PyQt怎么创建自定义QWidget,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!开发环境Win7  PyCharm  python3.5.1  PyQt5主要文件:|--&

小编给大家分享一下PyQt怎么创建自定义QWidget,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

开发环境

Win7  PyCharm  python3.5.1  PyQt5

主要文件:

|-- main.py|-- res| `-- fish.jpg`-- ui `-- app_widget.py

main.py

import sysfrom PyQt5.QtWidgets import QApplicationfrom ui.app_widget import AppQWidgetif __name__ == '__main__': app = QApplication(sys.argv) w = AppQWidget() w.show() sys.exit(app.exec_())

app_main_window.py

自定义了一个居中显示的窗口,关闭时弹确认框

from PyQt5.QtCore import QCoreApplicationfrom PyQt5.QtGui import QIconfrom PyQt5.QtWidgets import QWidget, QPushButton, QDesktopWidget, QMessageBoxclass AppQWidget(QWidget): """ A custom QWidget by Rust Fisher """ def __init__(self):  super().__init__()  self.init_ui() def init_ui(self):  # self.setGeometry(300, 300, 400, 200) # 相当于move和resize  self.resize(300, 200)  self.move_to_center()  self.setWindowTitle('Demo1')  self.setWindowIcon(QIcon('res/fish.jpg'))  btn1 = QPushButton('Quit', self)  btn1.setToolTip('Click to quit')  btn1.resize(btn1.sizeHint())  btn1.move(200, 150)  btn1.clicked.connect(QCoreApplication.instance().quit) # cannot locate function connect def closeEvent(self, event):  reply = QMessageBox.question(self, 'Message',          'Are you sure to quit now?',          QMessageBox.Yes | QMessageBox.No,          QMessageBox.No)  if reply == QMessageBox.Yes:   event.accept()  else:   event.ignore() def move_to_center(self):  qr = self.frameGeometry()  cp = QDesktopWidget().availableGeometry().center() # Got center info here  qr.moveCenter(cp)  self.move(qr.topLeft()) # 应用窗口的左上方的点到qr矩形的左上方的点,因此居中显示在我们的屏幕上

Tips

多控件可以存在list中

存在一起,需要对整体操作时直接遍历列表

 # 同组的控件可以存在同一个list中 self.cb_list = [  self.ma.i2cCB,  self.ma.mipiCB,  self.ma.eepromCB,  self.ma.tem_sensorCB,  self.ma.lensCB,  self.ma.vcmCB,  self.ma.mirrorCB,  self.ma.mirrorCaliCB, ] self.test_count_et_list = [  self.ma.i2cCountEt,  self.ma.mipiCountEt,  self.ma.eepromCountEt,  self.ma.tem_sensorCountEt,  self.ma.lensCountEt,  self.ma.vcmCountEt,  self.ma.mirrorCountEt,  self.ma.mirrorCaliCountEt, ]# 需要操作某组控件时 直接遍历列表def _click_test_item_cb(self): """ Update [choose all checkbox] by all test item state """ choose_all = True for cb in self.cb_list:  choose_all = choose_all & cb.isChecked() self.ma.selecteAllCB.setChecked(choose_all)

QApplication与QWidget

QApplication是一个单例,在QWidget中可以通过QApplication.instance()获取到对象

实际上在实例化QApplication前就使用QtGui.QWidget()是会报错的

>>> QtGui.QWidget()QWidget: Must construct a QApplication before a QPaintDevice

参考 How QApplication() and QWidget() objects are connected in PySide/PyQt?

在我们自定义的QMainWindow中,也可以直接获取到QApplication的实例。

class RustMainWindow(QMainWindow): """ This is the main class """ def _trigger_english(self):  print "Change to English", QApplication.instance()# Change to English <PyQt4.QtGui.QApplication object at 0x02ABE3A0>

注意widget持有外部对象引用的问题

如果在程序启动的地方将引用交给widget,退出时会造成应用无法关闭的问题(类似内存泄漏)。

if __name__ == '__main__': app = QApplication(sys.argv) # 这里把app交给了MainWindow,MainWindow关闭时是无法正常退出应用的 main_d = RustMainWindow(app) # 不建议这么做 main_d.show() sys.exit(app.exec_())

看完了这篇文章,相信你对“PyQt怎么创建自定义QWidget”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: PyQt怎么创建自定义QWidget

本文链接: https://lsjlt.com/news/268719.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PyQt怎么创建自定义QWidget
    小编给大家分享一下PyQt怎么创建自定义QWidget,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!开发环境Win7  PyCharm  Python3.5.1  PyQt5主要文件:|--&...
    99+
    2023-06-14
  • PyQt 如何创建自定义QWidget
    目录开发环境主要文件:main.pyapp_main_window.pyTips多控件可以存在list中QApplication与QWidget注意widget持有外部对象引用的问题...
    99+
    2024-04-02
  • 怎么创建自定义Nagios插件
    要创建自定义Nagios插件,您可以按照以下步骤进行: 决定插件类型:您可以选择编写一个脚本插件、C语言插件、Perl插件或Py...
    99+
    2024-04-02
  • FlexBuilder中怎么创建自定义控件
    FlexBuilder中怎么创建自定义控件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。创建自定义组件1、Flex是由as类结构实现的。FlexBuilder教程中类结构包含了...
    99+
    2023-06-17
  • ASP.NET中怎么创建自定义操作
    这期内容当中小编将会给大家带来有关ASP.NET中怎么创建自定义操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。ASP.NET安装部署之创建自定义操作1.在解决方案资源管理器中选择“Test Insta...
    99+
    2023-06-18
  • 怎么在react中创建自定义hooks
    这篇文章主要介绍“怎么在react中创建自定义hooks”,在日常操作中,相信很多人在怎么在react中创建自定义hooks问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在react中创建自定义hooks...
    99+
    2023-06-25
  • Delphi中怎么创建自定义控件
    在Delphi中创建自定义控件可以遵循以下步骤: 创建一个新的控件单元:在Delphi中,你可以通过“文件” -> “新建...
    99+
    2024-03-13
    Delphi
  • Delphi中怎么创建自定义组件
    在Delphi中创建自定义组件可以按照以下步骤进行: 打开Delphi集成开发环境(IDE)并创建一个新的VCL控件包项目(Fi...
    99+
    2024-03-13
    Delphi
  • 怎么使用CSS创建自定义光标
    这篇文章主要介绍了怎么使用CSS创建自定义光标,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 答:使用CSScursor属性 您可以使用...
    99+
    2024-04-02
  • C#怎么创建用户自定义异常
    本篇内容主要讲解“C#怎么创建用户自定义异常”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么创建用户自定义异常”吧!创建用户自定义异常您也可以定义自己的异常。用户自定义的异常类是派生自&n...
    99+
    2023-06-17
  • sql怎么创建自定义数据类型
    在 SQL 中,创建自定义数据类型可以使用 `CREATE TYPE` 语句。以下是一个示例:```sqlCREATE TYPE e...
    99+
    2023-09-25
    sql
  • 怎么为Nagios创建自定义通知插件
    创建自定义通知插件可以让Nagios监控系统发送特定的通知信息给管理员或其他相关人员,以下是创建自定义通知插件的一般步骤: 创建...
    99+
    2024-04-02
  • MySQL中怎么创建自定义聚合函数
    要在MySQL中创建自定义聚合函数,需要遵循以下步骤: 创建一个用于存储函数的数据库或选择一个现有的数据库。 CREATE DA...
    99+
    2024-04-30
    MySQL
  • 怎么在C#中创建一个自定义特性
    这期内容当中小编将会给大家带来有关怎么在C#中创建一个自定义特性,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。实现方式声明自定义特性,一个新的自定义特性应派生自 System.Attribute 类。//...
    99+
    2023-06-14
  • C#如何创建自定义特性
    目录概述实现方式概述 特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。...
    99+
    2024-04-02
  • html如何创建自定义列表
    这篇文章主要介绍了html如何创建自定义列表,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。定义列表自定义列表不仅仅是一列项目,而是项目及其注...
    99+
    2024-04-02
  • 如何创建 JavaScript 自定义事件
    目录怎么创建自定义事件事件定制冒泡 bubbles可取消 cancelable组合 composed给事件传递自定义数据命名约定双击事件总结前言: 相信大家肯定处理过很多的事件监听,...
    99+
    2024-04-02
  • 怎么使用API创建公众号自定义菜单
    这篇文章主要介绍“怎么使用API创建公众号自定义菜单”,在日常操作中,相信很多人在怎么使用API创建公众号自定义菜单问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用API创建公众号自定义菜单”的疑惑有所...
    99+
    2023-06-04
  • Android自定义控件的创建方法
    本文为大家分享了Android创建自定义控件的具体代码,供大家参考,具体内容如下 1、仿iPhone 的风格,在界面的顶部放置一个标题栏。 <?xml ver...
    99+
    2022-06-06
    方法 Android
  • Angular中如何自定义创建指令
    小编给大家分享一下Angular中如何自定义创建指令,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!指令介绍在 Angular 中有三种类型的指令:组件,有模板的指...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作