Opening a window from another window in python using pyqt framework - python

I am trying open a pyqt window from another pyqt window on clicking a button but i can't really get a hold do it . Both the python files opening.py and signup.py can run standalone on their own but i can't think of a way to link them ...(Running signup.py from opening.py after clicking signup button)
opening.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'opening.ui'
#
# Created: Tue Jan 20 00:19:45 2015
# by: PyQt4 UI code generator 4.10.4
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
#from signup import Ui_Dialog1
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(290, 237)
self.label = QtGui.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(70, 19, 151, 41))
self.label.setObjectName(_fromUtf8("label"))
self.pushButton = QtGui.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(40, 170, 201, 41))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.pushButton_2 = QtGui.QPushButton(Dialog)
self.pushButton_2.setGeometry(QtCore.QRect(40, 100, 201, 41))
self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
self.pushButton.clicked.connect(self.handleTest1)
self.pushButton_2.clicked.connect(self.handleTest2)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
self.label.setText(_translate("Dialog", "MAIL SERVER", None))
self.pushButton.setText(_translate("Dialog", "SIGN UP", None))
self.pushButton_2.setText(_translate("Dialog", "LOGIN", None))
def handleTest1(self):
#self.accept()
#self.h=Ui_Dialog1()
#self.h.setupUi(QtGui.QDialog())
pass
def handleTest2(self):
execfile('login.py')
import sys
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
and other file which is to be opened after clicking signup button (login button doesn't work as of now)
signup.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'abc.ui'
#
# Created: Mon Jan 19 23:35:37 2015
# by: PyQt4 UI code generator 4.10.4
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Dialog1(object):
def setupUi(self, Dialog):
print "16"
Dialog.setObjectName(_fromUtf8("SignUp"))
Dialog.resize(415, 364)
self.SignUp = QtGui.QDialogButtonBox(Dialog)
self.SignUp.setGeometry(QtCore.QRect(130, 310, 176, 27))
self.SignUp.setOrientation(QtCore.Qt.Horizontal)
self.SignUp.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
self.SignUp.setObjectName(_fromUtf8("SignUp"))
self.label = QtGui.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(50, 50, 91, 21))
self.label.setObjectName(_fromUtf8("label"))
self.label_2 = QtGui.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(50, 110, 66, 17))
self.label_2.setText(_fromUtf8(""))
self.label_2.setObjectName(_fromUtf8("label_2"))
self.label_3 = QtGui.QLabel(Dialog)
self.label_3.setGeometry(QtCore.QRect(50, 100, 66, 17))
self.label_3.setObjectName(_fromUtf8("label_3"))
self.label_4 = QtGui.QLabel(Dialog)
self.label_4.setGeometry(QtCore.QRect(50, 150, 66, 17))
self.label_4.setObjectName(_fromUtf8("label_4"))
self.label_5 = QtGui.QLabel(Dialog)
self.label_5.setGeometry(QtCore.QRect(50, 200, 121, 17))
self.label_5.setObjectName(_fromUtf8("label_5"))
self.label_6 = QtGui.QLabel(Dialog)
self.label_6.setGeometry(QtCore.QRect(50, 250, 91, 17))
self.label_6.setObjectName(_fromUtf8("label_6"))
self.lineEdit_3 = QtGui.QLineEdit(Dialog)
self.lineEdit_3.setGeometry(QtCore.QRect(200, 140, 181, 27))
self.lineEdit_3.setObjectName(_fromUtf8("lineEdit_3"))
self.lineEdit_4 = QtGui.QLineEdit(Dialog)
self.lineEdit_4.setGeometry(QtCore.QRect(200, 190, 181, 27))
self.lineEdit_4.setObjectName(_fromUtf8("lineEdit_4"))
self.lineEdit_5 = QtGui.QLineEdit(Dialog)
self.lineEdit_5.setGeometry(QtCore.QRect(200, 90, 181, 27))
self.lineEdit_5.setObjectName(_fromUtf8("lineEdit_5"))
self.lineEdit_6 = QtGui.QLineEdit(Dialog)
self.lineEdit_6.setGeometry(QtCore.QRect(200, 40, 181, 27))
self.lineEdit_6.setObjectName(_fromUtf8("lineEdit_6"))
self.lineEdit_7 = QtGui.QLineEdit(Dialog)
self.lineEdit_7.setGeometry(QtCore.QRect(200, 240, 181, 27))
self.lineEdit_7.setObjectName(_fromUtf8("lineEdit_7"))
self.retranslateUi(Dialog)
QtCore.QObject.connect(self.SignUp, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept)
QtCore.QObject.connect(self.SignUp, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)
print "17"
Dialog.show()
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("SignUp", "SignUp", None))
self.label.setText(_translate("Dialog", "Name", None))
self.label_3.setText(_translate("Dialog", "E-mail", None))
self.label_4.setText(_translate("Dialog", "Password", None))
self.label_5.setText(_translate("Dialog", "Confirm Password", None))
self.label_6.setText(_translate("Dialog", "Mobile (+91)", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog1()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
The commented part in opening.py is the one creating problems . Help would be appreciated .

Your Ui_Dialog1 should inherit from QDialog, which makes it an UI object, but you inherit from object, this has no "show" method.
def handleTest1(self):
#self.accept()
#self.h=Ui_Dialog1() # You need to move this to __init__ function
#self.h.setupUi(QtGui.QDialog()) # You need to move this to __init__ function
self.h.show() # call the show method here
You need to move the self.h = Ui_Dialog1() and setupUi to init functions, this will avoid possible memory leak. (otherwise each time you click "sigunup", it will create a new object)

Related

How to print the changing values of QLCD Widget in PyQt4?

I'm a bit new in PyQt4, I've been working on simple GUI which has an QDial and LCD Widget.I've used SIGNAL and SLOT technique,i.e when the QDial is changed it's value will be shown on the LCD Widget.
Similarly i want to print that LCD value in terminal everytime the QDial is changed.How am i supposed to do that?
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(610, 404)
MainWindow.setStatusTip(_fromUtf8(""))
MainWindow.setTabShape(QtGui.QTabWidget.Rounded)
self.centralWidget = QtGui.QWidget(MainWindow)
self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
self.dial_1 = QtGui.QDial(self.centralWidget)
self.dial_1.setGeometry(QtCore.QRect(390, 10, 101, 91))
font = QtGui.QFont()
font.setStrikeOut(False)
self.dial_1.setFont(font)
self.dial_1.setMouseTracking(False)
self.dial_1.setFocusPolicy(QtCore.Qt.ClickFocus)
self.dial_1.setStatusTip(_fromUtf8(""))
self.dial_1.setWhatsThis(_fromUtf8(""))
self.dial_1.setAccessibleDescription(_fromUtf8(""))
self.dial_1.setAutoFillBackground(False)
self.dial_1.setSingleStep(1)
self.dial_1.setPageStep(10)
self.dial_1.setProperty("value", 0)
self.dial_1.setSliderPosition(0)
self.dial_1.setWrapping(False)
self.dial_1.setNotchTarget(3.7)
self.dial_1.setNotchesVisible(True)
self.dial_1.setObjectName(_fromUtf8("dial_1"))
self.lcdNumber_1 = QtGui.QLCDNumber(self.centralWidget)
self.lcdNumber_1.setGeometry(QtCore.QRect(500, 40, 81, 41))
self.lcdNumber_1.setFrameShape(QtGui.QFrame.Panel)
self.lcdNumber_1.setLineWidth(2)
self.lcdNumber_1.setDigitCount(4)
self.lcdNumber_1.setSegmentStyle(QtGui.QLCDNumber.Flat)
self.lcdNumber_1.setObjectName(_fromUtf8("lcdNumber_1"))
self.label_1 = QtGui.QLabel(self.centralWidget)
self.label_1.setGeometry(QtCore.QRect(390, 100, 111, 17))
font = QtGui.QFont()
font.setBold(False)
font.setWeight(50)
self.label_1.setFont(font)
self.label_1.setObjectName(_fromUtf8("label_1"))
self.dial_2 = QtGui.QDial(self.centralWidget)
self.dial_2.setGeometry(QtCore.QRect(390, 120, 101, 91))
self.dial_2.setFocusPolicy(QtCore.Qt.ClickFocus)
self.dial_2.setNotchesVisible(True)
self.dial_2.setObjectName(_fromUtf8("dial_2"))
self.label_2 = QtGui.QLabel(self.centralWidget)
self.label_2.setGeometry(QtCore.QRect(390, 210, 111, 17))
font = QtGui.QFont()
font.setBold(False)
font.setWeight(50)
self.label_2.setFont(font)
self.label_2.setObjectName(_fromUtf8("label_2"))
self.lcdNumber_2 = QtGui.QLCDNumber(self.centralWidget)
self.lcdNumber_2.setEnabled(True)
self.lcdNumber_2.setGeometry(QtCore.QRect(500, 150, 81, 41))
font = QtGui.QFont()
font.setPointSize(18)
font.setBold(True)
font.setWeight(75)
self.lcdNumber_2.setFont(font)
self.lcdNumber_2.setFrameShape(QtGui.QFrame.Panel)
self.lcdNumber_2.setFrameShadow(QtGui.QFrame.Raised)
self.lcdNumber_2.setLineWidth(2)
self.lcdNumber_2.setMidLineWidth(0)
self.lcdNumber_2.setDigitCount(4)
self.lcdNumber_2.setMode(QtGui.QLCDNumber.Dec)
self.lcdNumber_2.setSegmentStyle(QtGui.QLCDNumber.Flat)
self.lcdNumber_2.setObjectName(_fromUtf8("lcdNumber_2"))
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtGui.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 611, 25))
self.menuBar.setObjectName(_fromUtf8("menuBar"))
MainWindow.setMenuBar(self.menuBar)
self.mainToolBar = QtGui.QToolBar(MainWindow)
self.mainToolBar.setObjectName(_fromUtf8("mainToolBar"))
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
self.statusBar = QtGui.QStatusBar(MainWindow)
self.statusBar.setObjectName(_fromUtf8("statusBar"))
MainWindow.setStatusBar(self.statusBar)
self.retranslateUi(MainWindow)
QtCore.QObject.connect(self.dial_1, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.lcdNumber_1.display)
QtCore.QObject.connect(self.dial_2, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.lcdNumber_2.display)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.label_1.setText(_translate("MainWindow", "Linear Velocity", None))
self.label_2.setText(_translate("MainWindow", "Angular Velocity", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
You can connect own function which gets value and use print() to display it
QtCore.QObject.connect(self.dial_1, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.lcdNumber_1.display)
# connect own function
QtCore.QObject.connect(self.dial_1, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.my_function)
def my_function(self, value):
print(value)
The same with second QDial.
You can even use directly print without creating own function because print will gets value.
QtCore.QObject.connect(self.dial_1, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), print)
EDIT: as #musicamante mentioned in comment - this version
SIGNAL(..., print)
will work only in Python 3 because print in Python 2 is not function.
Or you will have to use in Python 2
from __future__ import print_function

AttributeError: 'dataAcquisition' object has no attribute 'gpioButton'

I'm trying to connect a push-button on my main window to open a new widget when I click it. But each time I run the program I get this error:
AttributeError: 'dataAcquisition' object has no attribute 'gpioButton'
I will be grateful if someone can help.
Here's my code:
from PyQt4 import QtCore, QtGui
from mainwindow import Ui_MainWindow
from gpiodialog import Ui_GPIODialog
import sys
class gpioDialog(QtGui.QDialog, Ui_GPIODialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
flags = QtCore.Qt.Drawer | QtCore.Qt.WindowStaysOnTopHint
self.setWidowFlags(flags)
self.ui = Ui_GPIODialog
self.ui.setupUi(self)
self.gpioOKButton.clicked.connect(self.acceptOKButtonClicked)
def acceptOKButtonClicked(self):
self.close()
class dataAcquisition(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.gpioButton.clicked.connect(self.gpioButton_clicked)
self.popGPIO = gpioDialog()
def gpioButton_clicked(self):
self.popGPIO.show()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
MainWindow = dataAcquisition()
MainWindow.show()
sys.exit(app.exec_())
mainwindow.py code:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created: Tue Oct 18 02:57:57 2016
# by: PyQt4 UI code generator 4.11.2
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(700, 600)
MainWindow.setMinimumSize(QtCore.QSize(700, 600))
MainWindow.setMaximumSize(QtCore.QSize(700, 600))
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.gpioButton = QtGui.QToolButton(self.centralwidget)
self.gpioButton.setGeometry(QtCore.QRect(20, 80, 181, 61))
self.gpioButton.setObjectName(_fromUtf8("gpioButton"))
self.procButton = QtGui.QPushButton(self.centralwidget)
self.procButton.setGeometry(QtCore.QRect(20, 180, 181, 61))
self.procButton.setObjectName(_fromUtf8("procButton"))
self.startButton = QtGui.QPushButton(self.centralwidget)
self.startButton.setEnabled(True)
self.startButton.setGeometry(QtCore.QRect(20, 360, 131, 51))
self.startButton.setObjectName(_fromUtf8("startButton"))
self.stopButton = QtGui.QPushButton(self.centralwidget)
self.stopButton.setGeometry(QtCore.QRect(190, 360, 131, 51))
self.stopButton.setObjectName(_fromUtf8("stopButton"))
self.plotButton = QtGui.QPushButton(self.centralwidget)
self.plotButton.setGeometry(QtCore.QRect(20, 460, 181, 61))
self.plotButton.setObjectName(_fromUtf8("plotButton"))
self.columnView = QtGui.QColumnView(self.centralwidget)
self.columnView.setGeometry(QtCore.QRect(340, 50, 341, 251))
self.columnView.setObjectName(_fromUtf8("columnView"))
self.label_2 = QtGui.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(280, 20, 221, 21))
font = QtGui.QFont()
font.setPointSize(15)
font.setBold(True)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setObjectName(_fromUtf8("label_2"))
self.saveButton = QtGui.QPushButton(self.centralwidget)
self.saveButton.setEnabled(True)
self.saveButton.setGeometry(QtCore.QRect(410, 420, 211, 31))
self.saveButton.setObjectName(_fromUtf8("saveButton"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 700, 27))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.gpioButton.setText(_translate("MainWindow", "GPIO Number of inputs", None))
self.procButton.setText(_translate("MainWindow", "Processing", None))
self.startButton.setText(_translate("MainWindow", "Start Acquiring", None))
self.stopButton.setText(_translate("MainWindow", "Stop Acquiring", None))
self.plotButton.setText(_translate("MainWindow", "Start Live Plot", None))
self.label_2.setText(_translate("MainWindow", "Data Acquisition System", None))
self.saveButton.setText(_translate("MainWindow", "Save this session\'s data", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
gpiodialog.py code:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'gpiodialog.ui'
#
# Created: Tue Oct 18 03:11:51 2016
# by: PyQt4 UI code generator 4.11.2
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_GPIODialog(object):
def setupUi(self, GPIODialog):
GPIODialog.setObjectName(_fromUtf8("GPIODialog"))
GPIODialog.resize(400, 300)
self.gpioOKButton = QtGui.QPushButton(GPIODialog)
self.gpioOKButton.setGeometry(QtCore.QRect(170, 240, 101, 31))
self.gpioOKButton.setObjectName(_fromUtf8("gpioOKButton"))
self.label = QtGui.QLabel(GPIODialog)
self.label.setGeometry(QtCore.QRect(90, 20, 191, 21))
font = QtGui.QFont()
font.setPointSize(13)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName(_fromUtf8("label"))
self.retranslateUi(GPIODialog)
QtCore.QMetaObject.connectSlotsByName(GPIODialog)
def retranslateUi(self, GPIODialog):
GPIODialog.setWindowTitle(_translate("GPIODialog", "Dialog", None))
self.gpioOKButton.setText(_translate("GPIODialog", "OK", None))
self.label.setText(_translate("GPIODialog", "Choose GPIO input bins", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
GPIODialog = QtGui.QDialog()
ui = Ui_GPIODialog()
ui.setupUi(GPIODialog)
GPIODialog.show()
sys.exit(app.exec_())
You created a separate namespace for the ui, so you would need to access the button like this:
self.ui.gpioButton.clicked.connect(self.gpioButton_clicked)
However, if you'd prefer to have all the widgets as attributes of the window, do this:
class gpioDialog(QtGui.QDialog, Ui_GPIODialog):
def __init__(self, parent=None):
super(gpioDialog, self).__init__(parent)
flags = QtCore.Qt.Drawer | QtCore.Qt.WindowStaysOnTopHint
self.setWindowFlags(flags)
self.setupUi(self)
self.gpioOKButton.clicked.connect(self.acceptOKButtonClicked)
class dataAcquisition(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(dataAcquisition, self).__init__(parent)
self.setupUi(self)
self.gpioButton.clicked.connect(self.gpioButton_clicked)
self.popGPIO = gpioDialog()

In PyQt4 how do i initiate a window

Hello I am a student that is experimenting with GUI's and I was working in python making a simple log-in form and as I made the base layout I encountered an error where I could not solve the variables. This is the code:
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
def main():
app = QtGui.QApplication(sys.argv)
w = Ui_Dialog(__init__)
w.show()
sys.exit(app.exec_())
class Ui_Dialog(object):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.addWidgets()
self.setupUi(self)
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(380, 272)
Dialog.setMinimumSize(QtCore.QSize(380, 272))
Dialog.setMaximumSize(QtCore.QSize(380, 272))
self.buttonBox = QtGui.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setCenterButtons(True)
self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
self.user_name = QtGui.QTextEdit(Dialog)
self.user_name.setGeometry(QtCore.QRect(110, 50, 221, 31))
self.user_name.setAutoFillBackground(False)
self.user_name.setObjectName(_fromUtf8("user_name"))
self.user_pass = QtGui.QTextEdit(Dialog)
self.user_pass.setGeometry(QtCore.QRect(110, 120, 221, 31))
self.user_pass.setAutoFillBackground(False)
self.user_pass.setObjectName(_fromUtf8("user_pass"))
self.label = QtGui.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(20, 60, 81, 21))
self.label.setObjectName(_fromUtf8("label"))
self.label_2 = QtGui.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(20, 120, 81, 21))
self.label_2.setObjectName(_fromUtf8("label_2"))
self.retranslateUi(Dialog)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
self.label.setText(_translate("Dialog", "USER NAME", None))
self.label_2.setText(_translate("Dialog", "PASSWORD", None))
if __name__ == "__main__":
main()
sorry if the alignment is off i am not used to having to use stack overflow but the code results in the following output:
Traceback (most recent call last):
File "C:\Users\todd7\Desktop\PY_auth\design.py", line 75, in <module>
main()
File "C:\Users\todd7\Desktop\PY_auth\design.py", line 28, in main
w = Ui_Dialog(__init__)
NameError: name '__init__' is not defined
and i am not sure how to fix the issue.
Try making your __init__ function in your Ui_Dialog class this:
def __init__(self, window, parent=None):
self.addWidgets()
self.setupUi(self)
window.show()
Then, in your main() function,
def main():
app = QtGui.QApplication(sys.argv)
w = Ui_Dialog(QtGui.QMainWindow())
sys.exit(app.exec_())

In pyqt4, How do i open new window from existing one?

I want to open new window from existing one in pyqt.
My source code has two functions.
one functions : when button is clicked, File Dialog is opened.
another functions : when another button is clicked, New Window is
opened.
But When I want to New window, error message occurs :
Traceback (most recent call last): File "C:\Users\Han\Desktop\project\prototype\newwindow.py", line 61, in check_start self.w.show() AttributeError: 'Ui_dialog' object has no attribute 'show'
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(518, 349)
self.label = QtGui.QLabel(Form)
self.label.setGeometry(QtCore.QRect(40, 40, 141, 16))
self.label.setObjectName(_fromUtf8("label"))
self.label_2 = QtGui.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(400, 330, 141, 16))
self.label_2.setObjectName(_fromUtf8("label_2"))
self.horizontalLayoutWidget = QtGui.QWidget(Form)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(70, 200, 381, 31)) self.horizontalLayoutWidget.setObjectName(_fromUtf8("horizontalLayoutWidget"))
self.horizontalLayout = QtGui.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
self.textEdit = QtGui.QTextEdit(self.horizontalLayoutWidget)
self.textEdit.setObjectName(_fromUtf8("textEdit"))
self.horizontalLayout.addWidget(self.textEdit)
self.pushButton = QtGui.QPushButton(self.horizontalLayoutWidget)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.horizontalLayout.addWidget(self.pushButton)
self.pushButton_2 = QtGui.QPushButton(Form)
self.pushButton_2.setGeometry(QtCore.QRect(230, 270, 75, 23))
self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
self.retranslateUi(Form)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.file_open)
QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), self.check_start)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "Off_Strip", None))
self.label.setText(_translate("Form", "123", None))
self.label_2.setText(_translate("Form", "#Copyright MokLab", None))
self.pushButton.setText(_translate("Form", "123", None))
self.pushButton_2.setText(_translate("Form", "123!", None))
def file_open(self):
fname = QtGui.QFileDialog.getOpenFileName()
f = open(fname, 'r')
f.close()
def check_start(self):
self.w = Ui_dialog()
self.w.show()
class Ui_dialog(object):
def setupUi(self, dialog):
dialog.setObjectName(_fromUtf8("dialog"))
dialog.resize(400, 300)
self.pushButton = QtGui.QPushButton(dialog)
self.pushButton.setGeometry(QtCore.QRect(190, 130, 75, 23))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.radioButton = QtGui.QRadioButton(dialog)
self.radioButton.setGeometry(QtCore.QRect(30, 70, 90, 16))
self.radioButton.setObjectName(_fromUtf8("radioButton"))
self.radioButton_2 = QtGui.QRadioButton(dialog)
self.radioButton_2.setGeometry(QtCore.QRect(40, 110, 90, 16))
self.radioButton_2.setObjectName(_fromUtf8("radioButton_2"))
self.retranslateUi(dialog)
QtCore.QMetaObject.connectSlotsByName(dialog)
def retranslateUi(self, dialog):
dialog.setWindowTitle(_translate("dialog", "Form", None))
self.pushButton.setText(_translate("dialog", "PushButton", None))
self.radioButton.setText(_translate("dialog", "RadioButton", None))
self.radioButton_2.setText(_translate("dialog", "RadioButton", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
The line self.w.show, where you've declared w as a Ui_dialog object, will attempt to call the show instance variable inside Ui_dialog, which doesn't work because you've never defined any function called show.
It doesn't help that you've inherited object for class Ui_dialog. You should probably inherit QtGui.QDialog for that class, and rewrite your class accordingly.

open new window in pyqt [duplicate]

I want to open new window from existing one in pyqt.
My source code has two functions.
one functions : when button is clicked, File Dialog is opened.
another functions : when another button is clicked, New Window is
opened.
But When I want to New window, error message occurs :
Traceback (most recent call last): File "C:\Users\Han\Desktop\project\prototype\newwindow.py", line 61, in check_start self.w.show() AttributeError: 'Ui_dialog' object has no attribute 'show'
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(518, 349)
self.label = QtGui.QLabel(Form)
self.label.setGeometry(QtCore.QRect(40, 40, 141, 16))
self.label.setObjectName(_fromUtf8("label"))
self.label_2 = QtGui.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(400, 330, 141, 16))
self.label_2.setObjectName(_fromUtf8("label_2"))
self.horizontalLayoutWidget = QtGui.QWidget(Form)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(70, 200, 381, 31)) self.horizontalLayoutWidget.setObjectName(_fromUtf8("horizontalLayoutWidget"))
self.horizontalLayout = QtGui.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
self.textEdit = QtGui.QTextEdit(self.horizontalLayoutWidget)
self.textEdit.setObjectName(_fromUtf8("textEdit"))
self.horizontalLayout.addWidget(self.textEdit)
self.pushButton = QtGui.QPushButton(self.horizontalLayoutWidget)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.horizontalLayout.addWidget(self.pushButton)
self.pushButton_2 = QtGui.QPushButton(Form)
self.pushButton_2.setGeometry(QtCore.QRect(230, 270, 75, 23))
self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
self.retranslateUi(Form)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.file_open)
QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), self.check_start)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "Off_Strip", None))
self.label.setText(_translate("Form", "123", None))
self.label_2.setText(_translate("Form", "#Copyright MokLab", None))
self.pushButton.setText(_translate("Form", "123", None))
self.pushButton_2.setText(_translate("Form", "123!", None))
def file_open(self):
fname = QtGui.QFileDialog.getOpenFileName()
f = open(fname, 'r')
f.close()
def check_start(self):
self.w = Ui_dialog()
self.w.show()
class Ui_dialog(object):
def setupUi(self, dialog):
dialog.setObjectName(_fromUtf8("dialog"))
dialog.resize(400, 300)
self.pushButton = QtGui.QPushButton(dialog)
self.pushButton.setGeometry(QtCore.QRect(190, 130, 75, 23))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.radioButton = QtGui.QRadioButton(dialog)
self.radioButton.setGeometry(QtCore.QRect(30, 70, 90, 16))
self.radioButton.setObjectName(_fromUtf8("radioButton"))
self.radioButton_2 = QtGui.QRadioButton(dialog)
self.radioButton_2.setGeometry(QtCore.QRect(40, 110, 90, 16))
self.radioButton_2.setObjectName(_fromUtf8("radioButton_2"))
self.retranslateUi(dialog)
QtCore.QMetaObject.connectSlotsByName(dialog)
def retranslateUi(self, dialog):
dialog.setWindowTitle(_translate("dialog", "Form", None))
self.pushButton.setText(_translate("dialog", "PushButton", None))
self.radioButton.setText(_translate("dialog", "RadioButton", None))
self.radioButton_2.setText(_translate("dialog", "RadioButton", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
The line self.w.show, where you've declared w as a Ui_dialog object, will attempt to call the show instance variable inside Ui_dialog, which doesn't work because you've never defined any function called show.
It doesn't help that you've inherited object for class Ui_dialog. You should probably inherit QtGui.QDialog for that class, and rewrite your class accordingly.

Categories

Resources