Pyqt5 farklı şekilde buton oluşturma

Arkadaşlar pyqt5 kütüphanesi ile sıradan buton oluşturmayı biliyorum. Oluşturmayı bildiğim ve şu zamana kadar gördüğüm bütün butonlar 4gen şeklindeydiler. Öğrenmek istediğim yer butonları nasıl farklı formatlarda oluşturabilirim. Örneğin: Kalp yıldız şekillerinde ya da başka bir png resimden aldığın şekilde. Sormak istediğim şey buton üzerine ikon eklemek değildir.
Bunu elektronikçi arkadaşlar için bir düzenleme uygulaması yaparken kullanmam gerekiyor. Ve şu şekilde olucak kendi çizdiğim direnç , led vb. komponentleri görsel bir şekilde kullanıcıya sunulması ve üzerine tıpkı bir buton gibi tıknalına biliyor olması. Bunlar eğer butona icon ekleme yöntemi ile yaparsam 4gen bir buton içine küçük ve hoş durmayan resimler geliyor.
Yapmak istediğimi anladığınızı düşüyorum. Sorumda olduğu gibi eğer butonu farklı bir şekilde oluşturmak mümkün değilse ve bu sorunu nasıl çözeceğim hakkında fikriniz varsa , lütfen önerilerini esirgemeyiniz.
Şimdiden çok teşekkür ederim.

Butonları farklı şekilde yapmak yerine çizim kütüphanelerini kullanabilirsin. PyQt5 in OpenGl si ile grafik çizimi yapıp png leri yerleştirip png ye mouse ile tıklandığında bir olay tetiklenmesini sağlayabilirsin. Veya alternatif olarak tkinter de canvas ile aynısını yapabilirsin

İsimsiz bir buton oluşturun ve stilini değiştirin.
button.setStyleSheet(“background-image : url('image.png');”)

Merhaba.

Şu linki inceleyebilirsiniz:

Butonları css ile şekillendirebilirsiniz. Butona eklenecek görsellerin arkaplanı şeffaf yapıldığında çok güzel butonlar ortaya çıkabiliyor. Resim hiç belli olmuyor bile…


Örneğin bu programdaki butonlar gibi

Transparent oluyor sizin dediğiniz.

Ayrıca buton resimleri de istenilen seviyede büyütülebilir.

Tkinter’da 1 satır yeterli oluyor :slight_smile:

@Robotik_hobi siz ikonun şekli hakkında mı soru soruyorsunuz yoksa butonun tıklanabileceği yerleri belirleyen şekil hakkında mı?

@EkremDincel butonun tıklanabileceği yerleri hakkında

@ggns7 teşşekkür ederim bunu yaptığımda image butonun şeklini mi alcak?

@Ali_Kemal_Keles teşekkür ederim mantıklı


Şunun gibi tıklanabilir bir buton elde edeceksiniz. Ama yanlış hatırlamıyorsam, butonun solid border’ı oluyor. Onu da CSS ile halledebilirsiniz: border-color:transparent;

2 Beğeni

@ggns7 Peki css kodunu paython icinde yazmam mumkun mudur?
Bu arada demek istedigimi cok iyi anlamissiniz tesekkur ederim.

Yazabilirsiniz ama tavsiye etmem. Tasarım ve backend dosyaları her zaman ayrı olsun. QtDesigner’da tasarımınızı yapın, hangi objenin stili değiştirmek istiyorsanız, ona sağ tıklayıp change stylesheet gibi bir seçenek olmalı, onu seçin ve Css kodlarınızı yazın. Daha sonra Python dosyasına çevirin, artık bu tasarıma can verebilirsiniz :blush:
Not: Dönüştürülen Python dosyasına kod yazmayın. Başka bir dosyadan bu dosyayı import edip, tasarımı kullanın. Aksi takdirde sürekli aynı şeyi yapmak zorunda kalırsınız.
Burayı kesinlikle okuyun.

@ggns7 gercekten cok yardimci oldunuz yardiminiz icin cok tesekkue ederim.

Rica ederim, iyi çalışmalar.

@ggns7 sayende birçok şekilde buton ve diğer objelerin dinamiklerini ve stillerini değiştirmeyi öğrendim. Yanlızca şuna raslamadım. resimde gördüğün gibi 220_ohm_resistor-removebg-preview bir butonu nasıl oluşturabilirim?
Bunu bana bir örnek kodla açıklarsan işimi oldukça kolaylaştırmış olursun tekrardan teşekkürler.

from PyQt5.QtGui import QPixmap, QIcon
from PyQt5.QtWidgets import *
import sys
from PyQt5.QtCore import *

class Pencereler(QWidget):
   def __init__(self):
       super(). __init__ ()
       #self.resize(400,400)
       
       self.layout=QHBoxLayout()
       
       self.buton = QPushButton("")
       #buton en-yukseklik ayarı
       self.buton.setFixedWidth(500)
       self.buton.setFixedHeight(250)
       
       self.pixmap = QPixmap("direnc.png");
       self.buton.setIcon(QIcon(self.pixmap))
       # buton ikonu boyutunu ayarlama en x boy
       self.buton.setIconSize(QSize(500,250))
      
       # buton kenarlar çizgilerini kaldırma 
       self.buton. setStyleSheet("border: none;")
       
       self.layout.addWidget(self.buton)
       self.setLayout(self.layout)

       
uygulama=QApplication(sys.argv)
pencere=Pencereler()
pencere.show()
uygulama.exec_()

İstediğiniz şekilde en az bir buton yapabildiyseniz problem yoktur. Yalnızca buton resmini değiştirin.