PyQt怎么创建自定义QWidget

  介绍

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

开发环境

Win7 PyCharm Python3.5.1 PyQt5

主要文件:

|——, main.py   | - - - res   |,”——fish.jpg   ”——ui   ,,,app_widget.py

主要。py

import 系统      得到PyQt5.QtWidgets  import  QApplication      得到ui.app_widget  import  AppQWidget      if  __name__ ==, & # 39; __main__ # 39;:=,,app  QApplication (sys.argv)=,,w  AppQWidget ()   ,w.show ()      ,sys.exit (app.exec_ ())

app_main_window。py

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

得到PyQt5.QtCore  import  QCoreApplication   得到PyQt5.QtGui  import  QIcon   得到PyQt5.QtWidgets  import  QWidget, QPushButton,, QDesktopWidget, QMessageBox         class  AppQWidget (QWidget):   ,“““   ,A  custom  QWidget  by  Rust 费舍尔   ,“““      自我,def  __init__ ():   超级才能(). __init__ ()   self.init_ui才能()      ,def  init_ui(自我):   #,才能self.setGeometry(300,, 300,, 400,, 200), #,相当于移动和调整大小   self.resize才能(300,,200)   self.move_to_center才能()   self.setWindowTitle才能(& # 39;Demo1& # 39;)   self.setWindowIcon才能(QIcon (& # 39; res/fish.jpg& # 39;))      btn1 才能=,QPushButton(& # 39;退出# 39;,,自我)   btn1.setToolTip才能(& # 39;Click 用退出# 39;)   btn1.resize才能(btn1.sizeHint ())   btn1.move才能(200,,150)   btn1.clicked.connect才能(QCoreApplication.instance () .quit), #, cannot  locate  function 连接      ,def  closeEvent(自我,事件):   reply 才能=,QMessageBox.question(自我,,& # 39;消息# 39;,   ,,,,,,,,,& # 39;断开连接;你sure 用quit 现在? & # 39;   ,,,,,,,,,QMessageBox.Yes  |, QMessageBox.No,   ,,,,,,,,,QMessageBox.No)   if 才能;reply ==, QMessageBox.Yes:   ,,event.accept ()   其他的才能:   ,,event.ignore ()      ,def  move_to_center(自我):   时间=qr 才能;self.frameGeometry ()   cp 才能=,QDesktopWidget () .availableGeometry () .center (), #, got  center  info 这里   qr.moveCenter才能(cp)   self.move才能(qr.topLeft()), #,应用窗口的左上方的点到qr矩形的左上方的点,因此居中显示在我们的屏幕上

提示

多控件可以存在列表中

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

, #,同组的控件可以存在同一个列表中   ,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(自我):   “““大敌;Update  (choose  all 复选框),by  all  test  item  state “““   choose_all =, True   ,for  cb  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

参考QApplication如何()和QWidget()对象连接在PySide/PyQt吗?

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

class  RustMainWindow (QMainWindow):   “““大敌;却;能够is 从而main  class “““      ,def  _trigger_english(自我):   print 才能“Change 用English",, QApplication.instance ()      #,Change 用English  & lt; PyQt4.QtGui.QApplication  object  at  0 x02abe3a0>

PyQt怎么创建自定义QWidget