poltergeistПо этим примерам я немного понял, как диалоги выводить, а вот как вывести диалог, если мне его Десигнер сгенерил и он лежит в отдельном файле?. Вот сгенеренный код:
GoTo: C:\Program Files\PyQt4\examples\dialogs
Мне не в падлу ответить, но толку от этого для вас будет мало.
from PyQt4 import QtCore, QtGui
class Ui_dialog(object):
def setupUi(self, dialog):
dialog.setObjectName("dialog")
dialog.resize(QtCore.QSize(QtCore.QRect(0,0,520,394).size()).expandedTo(dialog.minimumSizeHint()))
self.buttonBox = QtGui.QDialogButtonBox(dialog)
self.buttonBox.setGeometry(QtCore.QRect(340,360,171,32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.listWidget = QtGui.QListWidget(dialog)
self.listWidget.setGeometry(QtCore.QRect(0,0,191,391))
font = QtGui.QFont()
font.setPointSize(12)
self.listWidget.setFont(font)
self.listWidget.setObjectName("listWidget")
self.groupBox = QtGui.QGroupBox(dialog)
self.groupBox.setGeometry(QtCore.QRect(200,0,311,341))
self.groupBox.setObjectName("groupBox")
QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("accepted()"),dialog.accept)
QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("rejected()"),dialog.reject)
QtCore.QObject.connect(self.listWidget,QtCore.SIGNAL("currentRowChanged(int)"),self.groupBox.repaint)
QtCore.QMetaObject.connectSlotsByName(dialog)
poltergeistПонял, спасибо большое за сравнение :). На то оно и зовется, видать, Десигнером, что не все может, но удобно :)
Ваш вариант:
from PyQt4 import QtCore, QtGui
class Ui_dialog(object):
def setupUi(self, dialog):
dialog.setObjectName(“dialog”)
dialog.resize(QtCore.QSize(QtCore.QRect(0,0,520,394).size()).expandedTo(dialog.minimumSizeHint()))
self.buttonBox = QtGui.QDialogButtonBox(dialog)
self.buttonBox.setGeometry(QtCore.QRect(340,360,171,32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName(“buttonBox”)
self.listWidget = QtGui.QListWidget(dialog)
self.listWidget.setGeometry(QtCore.QRect(0,0,191,391))
font = QtGui.QFont()
font.setPointSize(12)
self.listWidget.setFont(font)
self.listWidget.setObjectName(“listWidget”)
self.groupBox = QtGui.QGroupBox(dialog)
self.groupBox.setGeometry(QtCore.QRect(200,0,311,341))
self.groupBox.setObjectName(“groupBox”)
QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL(“accepted()”),dialog.accept)
QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL(“rejected()”),dialog.reject)
QtCore.QObject.connect(self.listWidget,QtCore.SIGNAL(“currentRowChanged(int)”),self.groupBox.repaint)
QtCore.QMetaObject.connectSlotsByName(dialog)
app = QtGui.QApplication()
dialog = QtGui.QDialog()
Ui_dialog().setupUi(dialog)
dialog.exec_()
Мой, более человечный вариант:
from PyQt4 import QtCore, QtGui
class Ui_dialog(QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
#
self.setupUi()
def setupUi(self):
self.setObjectName(“dialog”)
self.resize(QtCore.QSize(QtCore.QRect(0,0,520,394).size()).expandedTo(self.minimumSizeHint()))
self.buttonBox = QtGui.QDialogButtonBox(self)
self.buttonBox.setGeometry(QtCore.QRect(340,360,171,32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName(“buttonBox”)
self.listWidget = QtGui.QListWidget(self)
self.listWidget.setGeometry(QtCore.QRect(0,0,191,391))
font = QtGui.QFont()
font.setPointSize(12)
self.listWidget.setFont(font)
self.listWidget.setObjectName(“listWidget”)
self.groupBox = QtGui.QGroupBox(self)
self.groupBox.setGeometry(QtCore.QRect(200,0,311,341))
self.groupBox.setObjectName(“groupBox”)
QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL(“accepted()”),self.accept)
QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL(“rejected()”),self.reject)
QtCore.QObject.connect(self.listWidget,QtCore.SIGNAL(“currentRowChanged(int)”),self.groupBox.repaint)
QtCore.QMetaObject.connectSlotsByName(self)
app = QtGui.QApplication()
dialog = Ui_dialog()
result = dialog.exec_()
if result: print ‘OK Button pressed’
else: print ‘Cancel Button pressed’
wellХороший пример по этому вопросу:
Всем привет. У меня вопрос по поводу того, как лучше повесить какую-то функцию на кнопку. То есть, если я получал сигнал нажатия кнопки, то раньше я просто “вешал на него” любую функцию. Но тут стал вопрос, когда выполнение функции занимает каке-то время и она пишет лог в textBrowser по ходу выпонения. При обычном “вешании” окно зависает и ждет пока не выполнится функция. Я пока начал пользоваться потоками через threading, но может есть какое-то более рациональное решение?