Byly zveřejněny informace o kritické zranitelnosti CVE-2026-64600 pojmenované RefluXFS (technické detaily) v XFS. Je tam již od verze Linuxu 4.11, tj. rok 2017. Jedná se o lokální eskalaci práv. Neprivilegovaný uživatel může editovat libovolný soubor, například klidně zrušit rootovské heslo v /etc/passwd. Videoukázka na Vimeo. V upstreamu je zranitelnost opravena.
OpenAI / ChatGPT má dnes výpadky (OpenAI Status, DownDetector).
Poskytovatel hostingu svobodných/open-source projektů Codeberg po hlasování na valné hromadě vydal stanovisko k využívání LLM. Kvůli vytěžování infrastruktury a rostoucím cenám hardwaru, ale také hrozbám pro spolupráci v komunitě se k LLM staví kriticky. Nebude poskytovat hosting projektů vytvářených LLM agenty.
Jack Dorsey představil (𝕏) open source týmovou komunikační platformu Buzz (GitHub) s cílem snížit závislost na Slacku a GitHubu.
Poštovní klient Thunderbird byl vydán v nové verzi 153 s kódovým názvem Meadow. Jedná se o ESR (Extended Support Release) vydání. Přehled novinek v poznámkách k vydání. Vylepšuje OAuth. Thundermail lze používat bez instalace doplňku.
AI tento rok naplno vtrhla do vývoje softwaru a výrazně ovlivňuje také open source projekty. Jiří Eischmann v příspěvku Jak mění AI open source na svém blogu rozebírá několik trendů, které v open source v poslední době v souvislosti s AI pozoruje, a jak tyto trendy svět otevřeného softwaru mění (Inflace projektů, Zahlcení kontroly, Klesající motivace zveřejňovat kód).
Evropská komise (EK) vyměřila americké internetové společnosti Google pokutu 890 milionů eur (21,5 miliardy Kč) za porušení unijního nařízení o digitálních trzích (DMA). Firma se podle unijní exekutivy provinila tím, že ve vyhledávači Google Search upřednostňovala vlastní služby a že podnikům ukládala omezení, která jim bránila nasměrovat spotřebitele k alternativním, často levnějším nákupním kanálům na platformě Google Play.
… více »Samsung na akci Galaxy Unpacked July 2026 (YouTube) představil své nové telefony Galaxy Z Fold8 Ultra, Fold8 a Flip8, hodinky Galaxy Watch Ultra2 a Watch9 a chytré brýle ve spolupráci s Gentle Monster a Warby Parker.
Po pěti letech vývoje vyšla česká počítačová hra Scarlet Deer Inn (ProtonDB). Scarlet Deer Inn je vyšívaná temná středověká pohádka. Zatímco život ve zdánlivě obyčejné vesnici se točí kolem běžných povinností a sousedských drbů, v podzemí se skrývají zlověstná tajemství.
Představen byl Raspberry Pi Touch Display 2 s uhlopříčkou 10 palců a rozlišením 1200 × 1920 pixelů. Cena je 80 dolarů.
#!/usr/bin/python
import sys
import os
import string
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(400, 400)
self.setWindowTitle('segmentation')
#status bar
self.statusBar().showMessage('Ready')
#exit
exit = QtGui.QAction('Exit', self)
exit.setStatusTip('Exit application')
self.connect(exit, QtCore.SIGNAL('triggered()'), self.close)
#open bmp
openBMP= QtGui.QAction('Open BMP', self)
openBMP.setStatusTip('Open directory with BMP images')
self.connect(openBMP, QtCore.SIGNAL('triggered()'), self.BMP)
#menu bar
menubar = self.menuBar()
file = menubar.addMenu('&File')
file.addAction(exit)
file.addAction(openBMP)
def BMP(self):
print "open directory with bmp images"
dirname = QtGui.QFileDialog.getExistingDirectory(self,"Open Directory with bmp images",'./',QtGui.QFileDialog.ShowDirsOnly)
print "choosen directory: ",dirname
file_in_dir=os.listdir(str(dirname))
file_prefix=[]
for i in range (len(file_in_dir)):
print "file laoded: ", file_in_dir[i]
prefix=string.split(file_in_dir[i],".")
if (prefix[0] in file_prefix)==False:
file_prefix.append(prefix[0])
print "number loaded images from directory: ",i+1
self.file_prefix=file_prefix
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
Nicméně, pár poznámek k tomu co vidím:
- čeho chceš vlastně docílit? Seznamu názvů souborů bez koncovek? Nebo máš nějaké specifické názvy souborů, které obsahují speciální prefix? Nebo se u tebe bmp soubory jmenuji "bmp.nazev"?
- předpokládám, že "chovalo se to divně" znamená, že se ti prvky v QMainWindow neukazovaly tak jak jsi chtěl. Nezapomínej, že QMainWindow je pouze kontejner, který obsahuje status bary, menu bary a jiné bary, ale kromě toho mu musíš dodat i nějaký CentralWidget, což je teprve ten prvek, do kterého můžeš umisťovat své custom objekty.
- pro převod z QStringu s názvem adresáře použij spíš unicode() než str().
- iteruj přímo nad listem, který ti vrátil os.listdir(adresář), počet projetých souborů na konci vrať jako len(file_in_dir), nemusíš přičítat jedničku.
if prefix[0] not in file_prefix:
ne
if (prefix[0] in file_prefix)==False:
A když už jsme u toho, asi bych celou tuhle smyčku napsal jako set([item.split('.')[0] for item in file_prefix]). Sice dostaneš set a ne list, ale ten můžeš iterovat taky, a přinejhorším ho vždycky můžeš převést zpět na list pomocí list().
Dalo by se pokračovat, ale taky už jsem při nedělním večeru línej
Jestli jsi začátečník i v Pythonu, nejen v PyQt4, doporučuju raději začít u základů, a ne se hned vrhat na GUI aplikace. Nebudeš si zbytečně lámat hlavu nad věcmi, které plynou právě z těch základů.
#!/usr/bin/python
import sys
import os
import string
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(400, 400)
self.setWindowTitle('segmentation')
#status bar
self.statusBar().showMessage('Ready')
#exit
exit = QtGui.QAction('Exit', self)
exit.setStatusTip('Exit application')
self.connect(exit, QtCore.SIGNAL('triggered()'), self.close)
#open bmp
openBMP= QtGui.QAction('Open BMP', self)
openBMP.setStatusTip('Open directory with BMP images')
self.connect(openBMP, QtCore.SIGNAL('triggered()'), self.BMP)
#menu bar
menubar = self.menuBar()
file = menubar.addMenu('&File')
file.addAction(exit)
file.addAction(openBMP)
def BMP(self):
print "open directory with bmp images"
dirname = QtGui.QFileDialog.getExistingDirectory(self,"Open Directory with bmp images",'./',QtGui.QFileDialog.ShowDirsOnly)
print "choosen directory: ",dirname
file_in_dir=os.listdir(str(dirname))
file_prefix=[]
for i in range (len(file_in_dir)):
print "file laoded: ", file_in_dir[i]
prefix=string.split(file_in_dir[i],".")
if (prefix[0] in file_prefix)==False:
file_prefix.append(prefix[0])
print "number loaded images from directory: ",i+1
self.file_prefix=file_prefix
self.ChBox_prefix=CheckBox_BMP()
print self.ChBox_prefix.create_values(self)
class CheckBox_BMP(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
ChB_BMPWidget=QtGui.QWidget(self)
self.setWindowTitle('Choose prefix')
self.setGeometry(300, 300, 210, 60)
self.show()
def create_values(self,parent):
ChB_grid=QtGui.QGridLayout(self)
ChB_BMP_Label=QtGui.QLabel("Choose prefix: ",self)
ChB_grid.addWidget(ChB_BMP_Label,0,0)
self.cb=[]
for i in range(len(parent.file_prefix)):
self.cb.append(QtGui.QRadioButton(parent.file_prefix[i],self))
self.cb[i].setFocusPolicy(QtCore.Qt.NoFocus)
ChB_grid.addWidget(self.cb[i],i+1,0)
print "loaded prefix:",parent.file_prefix
self.cb[0].setChecked(True)
OK_button=QtGui.QPushButton("OK",self)
ChB_grid.addWidget(OK_button,i+2,1,QtCore.Qt.AlignRight)
self.connect(OK_button,QtCore.SIGNAL("clicked()"),self.what_prefix)
def what_prefix(self):
i=0
while (self.cb[i].isChecked()==False):
i=i+1
print "choosen prefix: ",i
self.close()
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
), tak jako mateřskou třídu pro CheckBox_BMP použij QDialog, ne QWidget, s tím že mu při vytvoření předáš jako parametr pro parent odkaz na MainWindow (tzn. že při jeho konstrukci v metodě MainWindow.BMP() stačí self.ChBox_prefix=CheckBox_BMP(self). Potom v instanci CheckBox_BMP získaš odkaz na MainWindows pomocí metody self.parent(), a můžeš napsat např. self.parent().chosen_prefix = self.cb[i].text(), a v MainWindow si pak přečteš prefix přes self.chosen_prefix. Ale pořád je to strašně prasácký
Nicméně z toho si nedělej, proti tomu co jsem psával ze začátku já to máš ještě zlatý
#!/usr/bin/python
import sys
import os
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(400, 400)
self.setWindowTitle('segmentation')
#status bar
self.statusBar().showMessage('Ready')
#exit
exit = QtGui.QAction('Exit', self)
exit.setStatusTip('Exit application')
self.connect(exit, QtCore.SIGNAL('triggered()'), self.close)
#open bmp
openBMP= QtGui.QAction('Open BMP', self)
openBMP.setStatusTip('Open directory with BMP images')
self.connect(openBMP, QtCore.SIGNAL('triggered()'), self.BMP2)
#menu bar
menubar = self.menuBar()
file = menubar.addMenu('&File')
file.addAction(exit)
file.addAction(openBMP)
self.chosen_prefix = None
def BMP2(self):
print "open directory with bmp images"
dirname = QtGui.QFileDialog.getExistingDirectory(self,"Open Directory with bmp images",'./',QtGui.QFileDialog.ShowDirsOnly)
print "choosen directory: ",dirname
file_in_dir=os.listdir(unicode(dirname))
file_prefix = list(set([item.split('.')[0] for item in file_in_dir]))
print "number loaded images from directory: ",len(file_in_dir)
chosen_prefix, dialog_status = QtGui.QInputDialog.getItem(self, u'Choose prefix', u'Choose prefix', file_prefix, 0, False)
if dialog_status: self.chosen_prefix = chosen_prefix
print "Chosen prefix:", self.chosen_prefix
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
Tiskni
Sdílej: