Note that there are some explanatory texts on larger screens.

plurals
  1. POPyQt4 QDialog connections not being made
    primarykey
    data
    text
    <p>I am working on an application using PyQt4 and the designer it provides. I have a main window application that works fine, but I wanted to create custom message dialogs. I designed a dialog and set up some custom signal/slot connections in the <code>__init__</code> method and wrote an <code>if __name__=='__main__':</code> and had a test. The custom slots work fine. However, when I create an instance of my dialog from my main window application, none of the buttons work. Here is my dialog:</p> <pre><code>from PyQt4.QtGui import * from PyQt4.QtCore import * import sys import encode_dialog_ui # Ui_EncodeDialog is the python class generated by pyuic4 from the Designer class EncodeDialog(encode_dialog_ui.Ui_EncodeDialog): def __init__(self, parent, in_org_im, txt_file, in_enc_im): self.qd = QDialog(parent) self.setupUi(self.qd) self.qd.show() self.message = (txt_file.split("/")[-1] + " encoded into " + in_org_im.split("/")[-1] + " and written to " + in_enc_im.split("/")[-1] + ".") QObject.connect(self.view_image_button, SIGNAL("clicked()"), self.on_view_image_button_press) self.org_im = in_org_im self.enc_im = in_enc_im self.encoded_label.setText(self.message) def on_view_image_button_press(self): print "hello world" if __name__ == '__main__': app = QApplication(sys.argv) tmp = QMainWindow() myg = EncodeDialog(tmp,'flower2.png','b','flower.png') app.exec_() </code></pre> <p>If I run this class it works fine, and pressing the view_image_button prints hello world to the console. However when I use the call</p> <pre><code>#self.mw is a QMainWindow, the rest are strings EncodeDialog(self.mw, self.encode_image_filename, self.encode_txt_filename, self.encode_new_image_filename) </code></pre> <p>in my main window class, the dialog displays correctly but the view_image_button does nothing when clicked. I have googled for a solution, but couldn't find anything useful. Let me know if you need any more information. Any help on this would be appreciated!</p> <p>As requested below is some more code from my main window class for brevity's sake I have added ellipses to remove code that seemed irrelevant. If no one can think of anything still, I will add more. (If indenting is a little off, it happened in copy-pasting. The orignal code is correct)</p> <pre><code>class MyGUI(MainWindow.Ui_MainWindow): def __init__(self): self.mw = QMainWindow() self.setupUi(self.mw) self.mw.show() self.encode_red_bits = 1 self.encode_blue_bits = 1 self.encode_green_bits = 1 self.decode_red_bits = 1 self.decode_blue_bits = 1 self.decode_green_bits = 1 self.encode_image_filename = "" self.encode_new_image_filename = "" self.encode_txt_filename = "" self.decode_image_filename = "" self.decode_txt_filename = "" # Encode events ... QObject.connect(self.encode_button, SIGNAL("clicked()"), self.on_encode_button_press) # Decode events ... # Encode event handlers ... def on_encode_button_press(self): tmp = QErrorMessage(self.mw) if (self.encode_image_filename != "" and self.encode_new_image_filename != "" and self.encode_txt_filename != ""): try: im = Steganography.encode(self.encode_image_filename, self.encode_txt_filename, self.encode_red_bits, self.encode_green_bits, self.encode_blue_bits) im.save(self.encode_new_image_filename) encode_dialog.EncodeDialog(self.mw, self.encode_image_filename, self.encode_txt_filename, self.encode_new_image_filename) except Steganography.FileTooLargeException: tmp.showMessage(self.encode_txt_filename.split("/")[-1] + " is to large to be encoded into " + self.encode_image_filename.split("/")[-1]) else: tmp.showMessage("Please specify all filenames.") # Decode event handlers ... if __name__ == '__main__': app = QApplication(sys.argv) myg = MyGUI() app.exec_() </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload