pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

<tfoot id='pE548'></tfoot>

    1. <small id='pE548'></small><noframes id='pE548'>

        <bdo id='pE548'></bdo><ul id='pE548'></ul>
    2. <legend id='pE548'><style id='pE548'><dir id='pE548'><q id='pE548'></q></dir></style></legend>

      1. <i id='pE548'><tr id='pE548'><dt id='pE548'><q id='pE548'><span id='pE548'><b id='pE548'><form id='pE548'><ins id='pE548'></ins><ul id='pE548'></ul><sub id='pE548'></sub></form><legend id='pE548'></legend><bdo id='pE548'><pre id='pE548'><center id='pE548'></center></pre></bdo></b><th id='pE548'></th></span></q></dt></tr></i><div class="oakco8e" id='pE548'><tfoot id='pE548'></tfoot><dl id='pE548'><fieldset id='pE548'></fieldset></dl></div>

        裝飾器添加了一個(gè)意想不到的參數(shù)

        Decorator adds an unexpected argument(裝飾器添加了一個(gè)意想不到的參數(shù))
      2. <legend id='TVnGK'><style id='TVnGK'><dir id='TVnGK'><q id='TVnGK'></q></dir></style></legend>
          <tbody id='TVnGK'></tbody>
          <bdo id='TVnGK'></bdo><ul id='TVnGK'></ul>
          <tfoot id='TVnGK'></tfoot>
              <i id='TVnGK'><tr id='TVnGK'><dt id='TVnGK'><q id='TVnGK'><span id='TVnGK'><b id='TVnGK'><form id='TVnGK'><ins id='TVnGK'></ins><ul id='TVnGK'></ul><sub id='TVnGK'></sub></form><legend id='TVnGK'></legend><bdo id='TVnGK'><pre id='TVnGK'><center id='TVnGK'></center></pre></bdo></b><th id='TVnGK'></th></span></q></dt></tr></i><div class="geqqicy" id='TVnGK'><tfoot id='TVnGK'></tfoot><dl id='TVnGK'><fieldset id='TVnGK'></fieldset></dl></div>
              • <small id='TVnGK'></small><noframes id='TVnGK'>

                  本文介紹了裝飾器添加了一個(gè)意想不到的參數(shù)的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

                  問題描述

                  我想在我的 PyQt5 應(yīng)用程序中使用裝飾器來處理異常:

                  I wanted to use a decorator to handle exceptions in my PyQt5 application:

                  def handle_exceptions(func):
                      def func_wrapper(*args, **kwargs):
                          try:
                              print(args)
                              return func(*args, **kwargs)
                          except Exception as e:
                              print(e)
                              return None
                      return func_wrapper
                  
                  
                  class MainWindow(QMainWindow):
                  
                      def __init__(self):
                          QMainWindow.__init__(self)
                          loadUi("main_window.ui",self)
                          self.connect_signals() 
                  
                      def connect_signals(self):
                          self.menu_action.triggered.connect(self.fun)
                  
                      @handle_exceptions
                      def fun(self):
                          print("hello there!")
                  

                  運(yùn)行時(shí)出現(xiàn)以下異常:

                  fun() takes 1 positional argument but 2 were given
                  

                  輸出為 False(在裝飾器中打印 args).

                  The output is False (printed args in the decorator).

                  有趣的是,當(dāng)我在構(gòu)造函數(shù)中直接通過 self.fun() 運(yùn)行 fun() 函數(shù)或注釋裝飾器時(shí),一切正常.似乎裝飾器添加了一個(gè)額外的參數(shù),但僅在信號(hào)調(diào)用函數(shù)時(shí).怎么回事?

                  The interesting thing is that when I run the fun() function directly by self.fun() in the constructor or comment the decorator, everything works. Seems like the decorator adds an additional argument, but only when the function is called by the signal. What is going on?

                  推薦答案

                  問題是因?yàn)?code>triggered 信號(hào)超載,也就是說它有2個(gè)簽名:

                  The problem is caused because the triggered signal is overload, that is to say it has 2 signatures:

                  void QAction::triggered(bool checked = false)
                  

                  QAction.triggered()
                  QAction.triggered(bool checked)
                  

                  所以默認(rèn)情況下它會(huì)發(fā)送一個(gè) boolean(false) 顯然不接受導(dǎo)致錯(cuò)誤的有趣"方法.

                  So by default it sends a boolean(false) that clearly does not accept the "fun" method causing the error.

                  在這種情況下,解決方案是使用 @pyqtSlot() 裝飾器來指明你必須接受的簽名:

                  In this case the solution is to use the @pyqtSlot() decorator to indicate the signature that you must accept:

                  @pyqtSlot()
                  @handle_exceptions
                  def fun(self):
                      print("hello there!")
                  

                  這篇關(guān)于裝飾器添加了一個(gè)意想不到的參數(shù)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

                  【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

                  相關(guān)文檔推薦

                  How to bind a function to an Action from Qt menubar?(如何將函數(shù)綁定到 Qt 菜單欄中的操作?)
                  PyQt progress jumps to 100% after it starts(PyQt 啟動(dòng)后進(jìn)度躍升至 100%)
                  How to set yaxis tick label in a fixed position so that when i scroll left or right the yaxis tick label should be visible?(如何將 yaxis 刻度標(biāo)簽設(shè)置在固定位置,以便當(dāng)我向左或向右滾動(dòng)時(shí),yaxis 刻度標(biāo)簽應(yīng)該可見
                  `QImage` constructor has unknown keyword `data`(`QImage` 構(gòu)造函數(shù)有未知關(guān)鍵字 `data`)
                  Change x-axis ticks to custom strings(將 x 軸刻度更改為自定義字符串)
                  How to show progress bar while saving file to excel in python?(如何在python中將文件保存為excel時(shí)顯示進(jìn)度條?)

                  <i id='I8sgf'><tr id='I8sgf'><dt id='I8sgf'><q id='I8sgf'><span id='I8sgf'><b id='I8sgf'><form id='I8sgf'><ins id='I8sgf'></ins><ul id='I8sgf'></ul><sub id='I8sgf'></sub></form><legend id='I8sgf'></legend><bdo id='I8sgf'><pre id='I8sgf'><center id='I8sgf'></center></pre></bdo></b><th id='I8sgf'></th></span></q></dt></tr></i><div class="i0kiw2k" id='I8sgf'><tfoot id='I8sgf'></tfoot><dl id='I8sgf'><fieldset id='I8sgf'></fieldset></dl></div>
                  • <bdo id='I8sgf'></bdo><ul id='I8sgf'></ul>

                        <tbody id='I8sgf'></tbody>

                      <small id='I8sgf'></small><noframes id='I8sgf'>

                          <legend id='I8sgf'><style id='I8sgf'><dir id='I8sgf'><q id='I8sgf'></q></dir></style></legend>
                        • <tfoot id='I8sgf'></tfoot>

                          • 主站蜘蛛池模板: 上海乾拓贸易有限公司-日本SMC电磁阀_德国FESTO电磁阀_德国FESTO气缸 | 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 旗帜网络笔记-免费领取《旗帜网络笔记》电子书 | 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | 硫化罐-电加热蒸汽硫化罐生产厂家-山东鑫泰鑫智能装备有限公司 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 济南保安公司加盟挂靠-亮剑国际安保服务集团总部-山东保安公司|济南保安培训学校 | 滑板场地施工_极限运动场地设计_滑板公园建造_盐城天人极限运动场地建设有限公司 | 螺钉式热电偶_便携式温度传感器_压簧式热电偶|无锡联泰仪表有限公司|首页 | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 电梯装饰-北京万达中意电梯装饰有限公司| 石英粉,滑石粉厂家,山东滑石粉-莱州市向阳滑石粉有限公司 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 济南网站策划设计_自适应网站制作_H5企业网站搭建_济南外贸网站制作公司_锐尚 | 网站建设_网站制作_SEO优化推广_百度推广开户_朋友圈网络科技 | 电缆隧道在线监测-智慧配电站房-升压站在线监测-江苏久创电气科技有限公司 | 河南砖机首页-全自动液压免烧砖机,小型砌块水泥砖机厂家[十年老厂] | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 制氮设备-变压吸附制氮设备-制氧设备-杭州聚贤气体设备制造有限公司 | 杭州中央空调维修_冷却塔/新风机柜/热水器/锅炉除垢清洗_除垢剂_风机盘管_冷凝器清洗-杭州亿诺能源有限公司 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 煤机配件厂家_刮板机配件_链轮轴组_河南双志机械设备有限公司 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 浙江建筑资质代办_二级房建_市政_电力_安许_劳务资质办理公司 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 博博会2021_中国博物馆及相关产品与技术博览会【博博会】 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 通辽信息港 - 免费发布房产、招聘、求职、二手、商铺等信息 www.tlxxg.net | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 卫生型双针压力表-高温防腐差压表-安徽康泰电气有限公司 | 大学食堂装修设计_公司餐厅效果图_工厂食堂改造_迈普装饰 | 曙光腾达官网-天津脚手架租赁-木板架出租-移动门式脚手架租赁「免费搭设」 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 耐磨焊丝,堆焊焊丝,耐磨药芯焊丝,碳化钨焊丝-北京耐默公司 | 咖啡加盟-咖啡店加盟-咖啡西餐厅加盟-塞纳左岸咖啡西餐厅官网 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 机械加工_绞车配件_立式离心机_减速机-洛阳三永机械厂 | 物流公司电话|附近物流公司电话上门取货 |