PyQt

2016-03-24 34 views
1

için QTableWidget öğesinin tek tek yatay üstbilgileri Tek bir yatay üstbilgi öğelerini bazı ölçütlere göre renklendirmek istediğim bir QTableWidget'i var. Ben şimdiye kadar ile geldi nePyQt

: Bu işler

stylesheet = "::section{Background-color:rgb(190,1,1)}" 
self.ui.Table.horizontalHeader().setStyleSheet(stylesheet) 

, ancak bana bir birey başlığının rengini değiştirmek mümkün olmadan, aynı anda renkleri tüm başlıkları. Yani bir sonraki mantıklı adım olacaktır: Bu işe yaramazsa

self.ui.Table.horizontalHeaderItem(0).setStyleSheet(stylesheet) 

, tek başlık öğesi stil ayarı desteklemez olarak. Nihayet

: Bu piton şikayet olmadan da gayet iyi çalışır

self.ui.Table.horizontalHeaderItem(0).setBackgroundColor(QtCore.Qt.red) 

, ancak herhangi bir arka plan rengi üzerinde herhangi bir etkiye sahip görünmemektedir.

Zaten this answer'a baktım, bu benim ilk denememi ateşledi. Ancak, sadece aynı renkteki tüm başlıkları renklendirmekle ilgilenir.

Başlıkları tek tek nasıl renklendirebilirim?

Aşağıdaki tarifi kullanarak bunu yapabilirsiniz

cevap

1

: Bu sonuçlanacaktır

import sys 
from PyQt5 import QtCore, QtGui, QtWidgets 

class MyFrame(QtWidgets.QFrame): 
    def __init__(self, parent=None,initials=None): 
     QtWidgets.QFrame.__init__(self, parent) 
     self.table = QtWidgets.QTableWidget(5,3,self) 
     self.table.move(30,30) 
     self.table.resize(400,300) 

     item1 = QtWidgets.QTableWidgetItem('red') 
     item1.setBackground(QtGui.QColor(255, 0, 0)) 
     self.table.setHorizontalHeaderItem(0,item1) 

     item2 = QtWidgets.QTableWidgetItem('green') 
     item2.setBackground(QtGui.QColor(0, 255, 0)) 
     self.table.setHorizontalHeaderItem(1,item2) 

     item3 = QtWidgets.QTableWidgetItem('blue') 
     item3.setBackground(QtGui.QColor(0, 0, 255)) 
     self.table.setHorizontalHeaderItem(2,item3) 

if __name__ == '__main__': 
    app = QtWidgets.QApplication(sys.argv) 
    app.setStyle(QtWidgets.QStyleFactory.create('Fusion')) # won't work on windows style. 
    Frame = MyFrame(None) 
    Frame.resize(500,400) 
    Frame.show() 
    app.exec_() 

: düşünmek gerekir

Different colors for header items in QTableWidget

bir şey Windows tarzı izin olmamasıdır bunu yap. Bu yüzden stili Fusion'a değiştirmek zorunda kaldım.

+0

Ne yazık ki PyQt4'ü kullanmak zorundayım. Tüm ithalatları ayarladıktan sonra, renklendirilmemiş başlıklara sahip bir tablo alıyorum. Bu özellik sadece PyQt4 ile çalışmıyor gibi görünüyor. PyQt4 için bir çözüm üretilirse biraz bekleyeceğim. Aksi halde, sizinle mücadele eden PyQt5 kullanıcılarının kabul ettikleri cevap olarak sizinkini işaretleyeceğim. – stebu92

+0

Emin misin? İthalat hariç tutulduğunda (bu örnekle ilgili) her şey aynı şekilde çalışmalıdır. Uygulama stilini değiştirdiniz mi? "app.setStyle (QtWidgets.QStyleFactory.create ('Fusion'))" Diğer stilleri deneyin, çünkü izinlerin Qt sürümleri arasında değişip değişmediğini bilmiyorum. "Windows" stili için Qt sürümü ne olursa olsun işe yaramayacağından eminim. – armatita

+0

haklısınız, füzyon veya pencerelerle değil, plastik ve temiz lekelerle çalışır. – stebu92