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.300
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.300
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.300
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.300
Temas: 3
Registro en: Feb 2016
Reputación:
71
Efectivamente un tutorial de PyQt es una tarea pendiente, lo tendré en cuenta!
|