Nourish (GitHub) je nový správce oken pro Linux. Tradiční plochy nahrazuje nekonečným plátnem a posouváním a přibližováním. Využívá vlastní kompozitor pro Wayland s názvem y5. Videoukázka.
Po 20 letech a 17 otevřených (open source) krátkých filmech Blender Studio oznámilo plán na svůj první celovečerní film. Cílem samozřejmě není jenom nový otevřený film, ale především vývoj a vylepšení otevřených nástrojů pro spolupráci napříč celým procesem a vytvoření otevřené příručky (playbook) pro filmovou produkci ve velkém měřítku s informacemi, které jsou obvykle dostupné pouze uvnitř komerčních studií, a pomoci tak nezávislým tvůrcům překonat technické a organizační bariéry.
Byla vydána nová verze 26.6.25 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
Apple bez varování odstranil ze svého obchodu sociální síť VKontaktě i další aplikace skupiny VK, jako je VK Music nebo VK Video [Novinky.cz].
V dubnu loňského roku představený poštovní klient Notion Mail bude 22. září ukončen.
Konference OpenAlt 2026 hledá přednášející. Proběhne o víkendu 7. a 8. listopadu na půdě Fakulty informačních technologií VUT v Brně. Témata konference jsou: Otevřený a svobodný software, IoT a Hnutí tvůrců, Vzdělávání, Bezpečnost a soukromí, Otevřená společnost, komunity a data, OpenMobility a další.
Společnosti OpenAI a Broadcom oznámily čip optimalizovaný pro AI pojmenovaný Jalapeño.
Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript, TypeScript a WebAssembly, bylo vydáno v nové verzi 2.9. Hlavní novinkou je deno desktop pro převod Deno projektu na desktopovou aplikaci. Jedná se o alternativu k frameworkům Electron nebo Tauri.
Od zítra jsou Datové schránky oficiálně na nové adrese datovka.gov.cz. Adresa mojedatovaschranka.cz zůstává funkční do 27. srpna 2026, následně budou uživatelé automaticky přesměrováni na datovka.gov.cz.
Dolphin (Wikipedie), tj. open source multiplatformní emulátor herních konzolí GameCube a Wii od Nintenda, byl vydán ve verzi 2606. S podporou Game Boy Playeru.
#!/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: