Mensajes: 53 
	Temas: 23 
	Registro en: Aug 2018
	
 Reputación: 
 0
	 
 
	
		
		
  
		28-08-2018, 09:51 PM 
		
	 
	
		Soy nuevo usando PyQt5, y tengo este problema: 
Tengo este combobox:
 Código: [code] 
class RenderWindow(QMainWindow): 
    def __init__(self, parent=None): 
        super(RenderWindow, self).__init__(parent) 
 
        self.setWindowTitle("Render video") 
        centralWidget = QWidget(self)           
        self.setCentralWidget(centralWidget)    
 
        # Create combobox and add items. 
        self.comboBox = QComboBox(centralWidget) 
        self.comboBox.setGeometry(QRect(10, 10, 150, 30)) 
        self.comboBox.setObjectName(("comboBox")) 
        self.comboBox.addItem("Full HD (1920p x 1080p)", 23) 
        self.comboBox.addItem("HD (1280p x 720)") 
        self.comboBox.addItem("SD (640 x 480)") 
 
        self.resize(350, 250) 
        self.setFixedSize(self.size()) 
[/code]
 Como haría para saber que opción selecciono el usuario en el combobox? 
Saludos
	  
	
	
	
	
 
 
	
	
	
		
	Mensajes: 1.308 
	Temas: 3 
	Registro en: Feb 2016
	
 Reputación: 
 71
	 
 
	
	
		Hola. Los métodos currentIndex() y currentText() retornan el índice de la opción seleccionada o bien su texto. 
 
Saludos
	 
	
	
	
	
 
 
	
	
	
		
	Mensajes: 53 
	Temas: 23 
	Registro en: Aug 2018
	
 Reputación: 
 0
	 
 
	
		
		
		28-08-2018, 11:43 PM 
(Última modificación: 29-08-2018, 12:13 AM por konniskatt.)
		
	 
	
		 (28-08-2018, 11:23 PM)Francisco escribió:  Hola. Los métodos currentIndex() y currentText() retornan el índice de la opción seleccionada o bien su texto. 
 
Saludos 
y como haría para añadir un radiobutton? y como añado texto a la ventana? 
Disculpe mi ignorancia, la mayoría de lo que encuentro en internet es para pyqt4.
	  
	
	
	
	
 
 
	
	
	
		
	Mensajes: 1.308 
	Temas: 3 
	Registro en: Feb 2016
	
 Reputación: 
 71
	 
 
	
	
		Esas cuestiones son idénticas en PyQt 5, únicamente cambian el modo en que se importan las clases (de PyQt4.QtGui a PyQt5.QtWidgets). 
Las clases para esos controles son  QRadioButton y  QLabel.
	  
	
	
	
	
 
 
	
	
	
		
	Mensajes: 53 
	Temas: 23 
	Registro en: Aug 2018
	
 Reputación: 
 0
	 
 
	
		
		
		29-08-2018, 08:53 PM 
(Última modificación: 29-08-2018, 09:53 PM por konniskatt.)
		
	 
	
		 (29-08-2018, 08:25 PM)Francisco escribió:  Esas cuestiones son idénticas en PyQt 5, únicamente cambian el modo en que se importan las clases (de PyQt4.QtGui a PyQt5.QtWidgets). 
 
Las clases para esos controles son QRadioButton y QLabel. 
Pues aca está mi código para crear un radiobutton y no muestra nada:
 Código: [code] 
from PyQt5 import * 
from PyQt5.QtCore import * 
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer 
from PyQt5.QtMultimediaWidgets import QVideoWidget 
from PyQt5.QtWidgets import * 
from PyQt5.QtGui import * 
import sys 
 
class OptionsWindow(QMainWindow): 
    def __init__(self, parent=None): 
        super(OptionsWindow, self).__init__(parent) 
        self.setWindowTitle("Video")  
 
        layout = QHBoxLayout() 
        self.b1 = QRadioButton("Button1") 
        self.b1.setChecked(True) 
        self.b1.toggled.connect(lambda:self.btnstate(self.b1)) 
        layout.addWidget(self.b1) 
         
        self.b2 = QRadioButton("Button2") 
        self.b2.toggled.connect(lambda:self.btnstate(self.b2)) 
 
        layout.addWidget(self.b2) 
        self.setLayout(layout)         
        def btnstate(self,b): 
     
            if b.text() == "Button1": 
                if b.isChecked() == True: 
                    print(b.text()+" is selected") 
                else: 
                    print(b.text()+" is deselected") 
                 
            if b.text() == "Button2": 
                if b.isChecked() == True: 
                    print(b.text()+" is selected") 
                else: 
                    print(b.text()+" is deselected") 
 
 
if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    op = OptionsWindow() 
    op.show() 
    sys.exit(app.exec_()) 
[/code]
  
	 
	
	
	
	
 
 
	
	
	
		
	Mensajes: 1.308 
	Temas: 3 
	Registro en: Feb 2016
	
 Reputación: 
 71
	 
 
	
		
		
		29-08-2018, 11:18 PM 
(Última modificación: 31-08-2018, 06:27 PM por Francisco.)
		
	 
	
		Hay varios errores en tu código. En primer lugar, estás definiendo  btnstate() dentro del método  __init__(), lo cual arrojará un error. Segundo, habrás visto en la consola que Qt se está quejando por tu llamada a  self.setLayout(layout). Para evitar esto primero tienes que crear un widget dentro de la ventana, y luego establecer el layout dentro de él.
 Código: class OptionsWindow(QMainWindow): 
    def __init__(self, parent=None): 
        super(OptionsWindow, self).__init__(parent) 
        self.setWindowTitle("Video")  
        self.widget = QWidget(self) 
         
        layout = QHBoxLayout() 
        self.b1 = QRadioButton("Button1") 
        self.b1.setChecked(True) 
        self.b1.toggled.connect(lambda: self.btnstate(self.b1)) 
        layout.addWidget(self.b1) 
         
        self.b2 = QRadioButton("Button2") 
        self.b2.toggled.connect(lambda: self.btnstate(self.b2)) 
  
        layout.addWidget(self.b2) 
        self.widget.setLayout(layout)     
        self.setCentralWidget(self.widget) 
             
    def btnstate(self,b): 
        if b.text() == "Button1": 
            if b.isChecked() == True: 
                print(b.text()+" is selected") 
            else: 
                print(b.text()+" is deselected") 
        if b.text() == "Button2": 
            if b.isChecked() == True: 
                print(b.text()+" is selected") 
            else: 
                print(b.text()+" is deselected")
 
Te recomiendo que leas algún tutorial sobre Qt para que puedas asir estas cuestiones básicas. También te podés guiar por los distintos programas que hicimos en Recursos Python usando PyQt:  https://recursospython.com/tag/pyqt/.
 
Saludos
	  
	
	
	
	
 
 
	
	
	
		
	Mensajes: 53 
	Temas: 23 
	Registro en: Aug 2018
	
 Reputación: 
 0
	 
 
	
	
		 (29-08-2018, 11:18 PM)Francisco escribió:  Hay varios errores en tu código. En primer lugar, estás definiendo btnstate() dentro del método __init__(), lo cual arrojará un error. Segundo, habrás visto en la consola que Qt se está quejando por tu llamada a self.setLayout(layout). Para evitar esto primero tienes que crear un widget dentro de la ventana, y luego establecer el layout dentro de él. 
 
Código: class OptionsWindow(QMainWindow): 
    def __init__(self, parent=None): 
        super(OptionsWindow, self).__init__(parent) 
        self.setWindowTitle("Video")  
        self.widget = QWidget(self) 
         
        layout = QHBoxLayout() 
        self.b1 = QRadioButton("Button1") 
        self.b1.setChecked(True) 
        self.b1.toggled.connect(lambda:self.btnstate(self.b1)) 
        layout.addWidget(self.b1) 
         
        self.b2 = QRadioButton("Button2") 
        self.b2.toggled.connect(lambda:self.btnstate(self.b2)) 
  
        layout.addWidget(self.b2) 
        self.widget.setLayout(layout)     
        self.setCentralWidget(self.widget) 
             
    def btnstate(self,b): 
        if b.text() == "Button1": 
            if b.isChecked() == True: 
                print(b.text()+" is selected") 
            else: 
                print(b.text()+" is deselected") 
        if b.text() == "Button2": 
            if b.isChecked() == True: 
                print(b.text()+" is selected") 
            else: 
                print(b.text()+" is deselected")
  
Te recomiendo que leas algún tutorial sobre Qt para que puedas asir estas cuestiones básicas. También te podés guiar por los distintos programas que hicimos en Recursos Python usando PyQt: https://recursospython.com/tag/pyqt/. 
 
Saludos Gracias, sugiero que hagas un tutorial para PyQt5, ya que he encontrado pocos y no son muy claros. Hay uno en español, pero usa Qt Designer, y por más raro que suene, prefiero hacer todo en código envés de usar un editor WYSIWYG. 
Saludos
	  
	
	
	
	
 
 
	
	
	
		
	Mensajes: 1.308 
	Temas: 3 
	Registro en: Feb 2016
	
 Reputación: 
 71
	 
 
	
	
		Efectivamente un tutorial de PyQt es una tarea pendiente, lo tendré en cuenta!
	 
	
	
	
	
 
 
	 
 |