PushButton ile açılabilir menü nasıl yapılır?

Arkadaşlar merhaba.

Bir buton ekleyeceğim ve butona bastığımda, butonun altında menü açılacak. Menüden item seçeceğim ve ona göre işlem yapılacak. Bunu nasıl yapabilirim?

Menüden kastınız nedir tam olarak?
Bahsini ettiğiniz şey QComboBox ile yapılabilir gibi geliyor.

ComboBox’tan yeni bir ‘item’ seçtiğinizde bir fonksiyonu çağırmak için currentTextChanged veya currentIndexChanged ile ‘connect’ edebilirsin.

def on_combobox_changed(self, value):
    print("combobox changed", value)
    # do your code

Burada value, neye ‘connect’ ettiğine bağlı olarak yeni text değeri veya yeni index değeri oluyor.

ComboBox.currentTextChanged.connect(self.on_combobox_changed)
# veya
ComboBox.currentIndexChanged.connect(self.on_combobox_changed)

qcombobox_widget_output
ComboBox yukarıdaki görsel gibi bir şey.

Yok hocam comboBox değil. Şimdi şöyle: Ben butona tıklayacağım, sonra butonun altında bir menü açılacak. Ve menüden seçtiğime göre işlem yapacak. Mesela bunun gibi:

Ekran görüntüsü 2021-12-05 233226

Kapatma tuşuna basınca menü açıldı. Ben de bir buton koyacağım ve butona basınca menü açılacak.

Şöyle bir şey uygulanabilir.

from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import sys

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Test")
        self.setupUi()
        self.show()

        self.condition = False

    def setupUi(self):
        self.setFixedSize(200, 450)

        self.b1 = QPushButton("Seçenekler", self)
        self.b1.setGeometry(QRect(25, 325, 150, 100))
        self.b1.clicked.connect(self.function_1)
        self.b1.show()

        self.group_box = QGroupBox(self)
        self.group_box.setGeometry(QRect(25, 25, 150, 300))
        self.group_box.setVisible(False)

        self.i1 = QPushButton("1. item", self.group_box)
        self.i1.setGeometry(QRect(0, 0, 150, 100))
        self.i1.clicked.connect(self.function_2)

        self.i2 = QPushButton("2. item", self.group_box)
        self.i2.setGeometry(QRect(0, 100, 150, 100))
        self.i2.clicked.connect(self.function_2)

        self.i3 = QPushButton("3. item", self.group_box)
        self.i3.setGeometry(QRect(0, 200, 150, 100))
        self.i3.clicked.connect(self.function_2)

    def function_1(self):
        if self.condition == True:
            self.group_box.setVisible(False)
            self.condition = False
        else:
            self.group_box.setVisible(True)
            self.condition = True

    def function_2(self):
        value = (self.sender()).text()
        print(f"İtem seçildi >>> {value}")

        self.group_box.setVisible(False)
        self.condition = False

app = QApplication(sys.argv)
gui = MainWindow()

app.exec_()

setStyleSheet() ile biraz kurcaladıktan sonra güzel bir görüntü elde edebilirsin diye düşünmekteyim.

4 Beğeni