Pycharm:pythonqt代码完成
我是Python中Qt的初学者 我使用Qt设计器创建简单的 我需要什么-用户点击按钮后,应用程序将文本从编辑复制到标签 我有来自Qt Designer的文件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"&
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)