Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pycharm:pythonqt代码完成_Python_Qt_Pyqt4_Pycharm_Code Completion - Fatal编程技术网

Pycharm:pythonqt代码完成

Pycharm:pythonqt代码完成,python,qt,pyqt4,pycharm,code-completion,Python,Qt,Pyqt4,Pycharm,Code Completion,我是Python中Qt的初学者 我使用Qt设计器创建简单的 我需要什么-用户点击按钮后,应用程序将文本从编辑复制到标签 我有来自Qt Designer的文件example.ui: <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"&

我是Python中Qt的初学者

我使用Qt设计器创建简单的

我需要什么-用户点击按钮后,应用程序将文本从编辑复制到标签

我有来自Qt Designer的文件
example.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>308</width>
    <height>143</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
      <x>10</x>
      <y>20</y>
      <width>121</width>
      <height>17</height>
     </rect>
    </property>
    <property name="text">
     <string>Enter name</string>
    </property>
   </widget>
   <widget class="QLineEdit" name="lineEdit">
    <property name="geometry">
     <rect>
      <x>100</x>
      <y>20</y>
      <width>113</width>
      <height>27</height>
     </rect>
    </property>
   </widget>
   <widget class="QPushButton" name="pushButton">
    <property name="geometry">
     <rect>
      <x>80</x>
      <y>60</y>
      <width>85</width>
      <height>27</height>
     </rect>
    </property>
    <property name="text">
     <string>Display</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_2">
    <property name="geometry">
     <rect>
      <x>10</x>
      <y>90</y>
      <width>261</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <weight>75</weight>
      <bold>true</bold>
     </font>
    </property>
    <property name="text">
     <string>TextLabel</string>
    </property>
   </widget>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>
但是代码完成不起作用!所以它对我来说是无法使用的:-(

我正在使用JetBrains Pycharm

在IDE的工作代码竞争中,在python代码中使用Qt设计器输出的正确方法是什么?

1)生成python代码:
pyuic4-o mygui.py mygui.ui

2) 编写代码:

import sys
from PyQt4 import QtCore, QtGui
from mygui import Ui_MainWindow

class StartQT4(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.abc)

    def abc(self):
        input = self.ui.lineEdit.text()
        self.ui.label_2.setText(input)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = StartQT4()
    myapp.show()
    sys.exit(app.exec_())

它可以工作,但可以编写
QtCore.QObject.connect(self.ui.butdown,QtCore.SIGNAL(“clicked()”),self.abc)
更简单?

不是一个完整的答案,但肯定可以提及:代码完成不适用于动态对象。你当然还可以用

self.pushButton.clicked.connect(self.abc)
而不是

QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.abc)
但是,
self.butdown.clicked.*


(这也回答了这个问题)

我也在使用Pycharm进行Python和PyQT开发,效果很好。当你的意思是“自动完成”不起作用时,你能提供一些细节吗?PyQt模块自动完成失败或UI部分失败?好的,我明白你的意思。使用“loadUiType”时不应期望自动完成,因为“loadUiType”发生在运行时,但自动完成取决于静态分析,因此正确的方法是使用“pyuic”将UI文件生成为.py文件,然后在项目中导入并使用它,然后自动完成将起作用示例:我想使用名为的QLabel=“label_2”。在Pycharm中,我开始写“labe”,然后按ctrl+space,没有得到任何建议是的,请参阅我的上一篇文章,利用pyuic生成的文件,而不是调用“loadUiType”,然后使用setupUi安装生成的python文件,在这种情况下,自动完成将正常工作!仅供参考,因为pyuic将默认输出到stdout,所以您需要将输出重定向到python文件,然后导入它。
QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.abc)