Spotify prostřednictvím svého FOSS fondu rozdělilo 70 000 eur mezi tři open source projekty: FFmpeg obdržel 30 000 eur, Mock Service Worker (MSW) obdržel 15 000 eur a Xiph.Org Foundation obdržela 25 000 eur.
Nazdar! je open source počítačová hra běžící také na Linuxu. Zdrojové kódy jsou k dispozici na GitHubu. Autorem je Michal Škoula.
Po více než třech letech od vydání verze 1.4.0 byla vydána nová verze 1.5.0 správce balíčků GNU Guix a na něm postavené stejnojmenné distribuci GNU Guix. S init systémem a správcem služeb GNU Shepherd. S experimentální podporou jádra GNU Hurd. Na vývoji se podílelo 744 vývojářů. Přibylo 12 525 nových balíčků. Jejich aktuální počet je 30 011. Aktualizována byla také dokumentace.
Na adrese gravit.huan.cz se objevila prezentace minimalistického redakčního systému GravIT. CMS je napsaný ve FastAPI a charakterizuje se především rychlým načítáním a jednoduchým ukládáním obsahu do textových souborů se syntaxí Markdown a YAML místo klasické databáze. GravIT cílí na uživatele, kteří preferují CMS s nízkými nároky, snadným verzováním (např. přes Git) a možností jednoduchého rozšiřování pomocí modulů. Redakční
… více »Tým Qwen (Alibaba Cloud) uvolnil jako open-source své modely Qwen3‑TTS pro převádění textu na řeč. Sada obsahuje modely VoiceDesign (tvorba hlasu dle popisu), CustomVoice (stylizace) a Base (klonování hlasu). Modely podporují syntézu deseti různých jazyků (čeština a slovenština chybí). Stránka projektu na GitHubu, natrénované modely jsou dostupné na Hugging Face. Distribuováno pod licencí Apache‑2.0.
Svobodný citační manažer Zotero (Wikipedie, GitHub) byl vydán v nové major verzi 8. Přehled novinek v příspěvku na blogu.
Byla vydána verze 1.93.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Svobodný operační systém ReactOS (Wikipedie), jehož cílem je kompletní binární kompatibilita s aplikacemi a ovladači pro Windows, slaví 30. narozeniny.
Společnost Raspberry Pi má nově v nabídce flash disky Raspberry Pi Flash Drive: 128 GB za 30 dolarů a 256 GB za 55 dolarů.
Technologie Skip pro multiplatformní mobilní vývoj, která umožňuje vývojářům vytvářet iOS a Android aplikace z jediné Swift a SwiftUI kódové základny, se s vydáním verze 1.7 stala open source.
Dělám si program na výpočet matic a determinantů v pythnu za pomocí PyQT4. Jenže jsem uvíznul na mrtvém bodě a nevim jak dál. Matice( determinant) je tvořen pomocí spinboxů chci aby bylo možno pomocí dvou spinboxů zadat počet řádků a sloupců. Gui jsem si navrhnul v QT designeru4 pomocí pyuic4 předělám na modul a nyní nevim jak udělat automatické vykreslování. Mám kód, který si to načte z těch spinboxů( počet řádky a sloupců), jenže udělá to jenom při spuštění nemůžu zaboha docílit aby se, když kliknu na nastavit ty spinboxy změnili.
Tady je kód který dělá to vykreslování:ui.spinBox = []
for i in range(self.spbRadky.value()): #spbRadky je počet řádků
self.spinBox.append([])
for y in range(self.spbSloupce.value()): #spbSloupce je počet sloupců
self.spinBox[i].append(QtGui.QSpinBox(self.gridLayout))
self.gridlayout.addWidget(self.spinBox[i][y],i,y,1,1)
Tady je kousek kódu z gui:
from PyQt4 import QtCore, QtGui
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setWindowModality(QtCore.Qt.WindowModal)
MainWindow.resize(QtCore.QSize(QtCore.QRect(0,0,543,388).size()).expandedTo(MainWindow.minimumSizeHint()))
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
MainWindow.setSizePolicy(sizePolicy)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame = QtGui.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(0,250,541,81))
self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
self.frame.setFrameShadow(QtGui.QFrame.Raised)
self.frame.setObjectName("frame")
self.btnVypocti = QtGui.QPushButton(self.frame)
self.btnVypocti.setGeometry(QtCore.QRect(420,40,116,30))
self.btnVypocti.setObjectName("btnVypocti")
self.btnClear = QtGui.QPushButton(self.frame)
self.btnClear.setGeometry(QtCore.QRect(420,10,116,30))
self.btnClear.setObjectName("btnClear")
self.line_2 = QtGui.QFrame(self.frame)
self.line_2.setGeometry(QtCore.QRect(343,0,20,111))
self.line_2.setFrameShape(QtGui.QFrame.VLine)
self.line_2.setFrameShadow(QtGui.QFrame.Sunken)
self.line_2.setObjectName("line_2")
self.spbRadky = QtGui.QSpinBox(self.frame)
self.spbRadky.setGeometry(QtCore.QRect(130,10,62,30))
self.spbRadky.setMinimum(2)
self.spbRadky.setMaximum(5)
self.spbRadky.setObjectName("spbRadky")
self.spbSloupce = QtGui.QSpinBox(self.frame)
self.spbSloupce.setGeometry(QtCore.QRect(130,40,62,30))
self.spbSloupce.setMinimum(2)
self.spbSloupce.setMaximum(5)
self.spbSloupce.setObjectName("spbSloupce")
self.label = QtGui.QLabel(self.frame)
self.label.setGeometry(QtCore.QRect(190,10,47,31))
self.label.setObjectName("label")
self.label_2 = QtGui.QLabel(self.frame)
self.label_2.setGeometry(QtCore.QRect(190,39,71,31))
self.label_2.setObjectName("label_2")
self.btnNastavit = QtGui.QPushButton(self.frame)
self.btnNastavit.setGeometry(QtCore.QRect(250,10,95,30))
self.btnNastavit.setObjectName("btnNastavit")
self.comboboxVyber = QtGui.QComboBox(self.frame)
self.comboboxVyber.setGeometry(QtCore.QRect(10,10,115,29))
self.comboboxVyber.setObjectName("comboboxVyber")
self.widgetMatice = QtGui.QWidget(self.centralwidget)
self.widgetMatice.setGeometry(QtCore.QRect(0,0,401,251))
self.widgetMatice.setObjectName("widgetMatice")
self.gridLayout = QtGui.QWidget(self.widgetMatice)
self.gridLayout.setGeometry(QtCore.QRect(0,0,401,251))
self.gridLayout.setObjectName("gridLayout")
self.gridlayout = QtGui.QGridLayout(self.gridLayout)
self.gridlayout.setObjectName("gridlayout")
#tady jsem měl ten kód vloženej ale udělá se to jenom při spuštění
Podle mě to půjde udělat pomocí signálu, který znova načte celí okno, jenže nevim jak na to. Další možnost je to zapsat do funkce a tu spustit při kliknutí na nastav jenže jsem nepřišel na to aby se to vykreslilo zrovna tam. Před tím jsem to měl udělaný tak že jsem je vytvořil a při nastavení jsem ty co nejsou potřeba skryl ale to mi příjde celkem jako oškliví řešení. Předem moc dík za každou radu. PS. nesmějte se mi jestli je to blbost
Tiskni
Sdílej:
<něco, co dědí od QObject>.connect(<tlačítko>, QtCore.SIGNAL("clicked(bool)"), prekresli).
app = QtGui.QApplication(sys.argv) mainWindow = QtGui.QMainWindow() ui = Ui_MainWindow() ui.setupUi(mainWindow)
#soubor mojeokno.py
import ui
from PyQt4 import QtCore, QtGui
class MojeOkno(QtGui.QMainWindow, ui.Ui_MainWindow):
spinBox = [] #sem budeš cpát nové spinboxy
def __init__(self):
QtGui.QMainWindow.__init__(self) #musí být, jinak to nefunguje
self.setupUi(self) #rozkreslí ti prvky
self.connect(self.buttonNastav, QtCore.SIGNAL("clicked(bool)"), self.prekresli)
#připoj signál na funkci prekresli (ta pod timhle komentarem)
def prekresli(self): #tvoje funkce na překreslení
#chce doladit, jen jsem copy&pastnul tvůj kód.
for i in range(self.spbRadky.value()): #spbRadky je počet řádků
self.spinBox.append([])
for y in range(self.spbSloupce.value()): #spbSloupce je počet sloupců
self.spinBox[i].append(QtGui.QSpinBox(self.gridLayout))
self.gridlayout.addWidget(self.spinBox[i][y],i,y,1,1)
Ve spouštěcím skriptu pak budeš mít něco v tomhle smyslu:
from mojeokno import * app = QtGui.QApplication(sys.argv) mainWindow = MojeOkno()Ještě poznámečka: ty soubory, co vylezou z pyuic4 neupravuj, ale jen je naimportuj a vytvoř si pro ty okna vlastní třídy odvozené od toho, co je v těch souborech. Pak budeš moct gui jen upravit v QtDesigneru, prohnat přes pyuic4 a příslušné soubory přepsat aniž bys přišel o svoje přidané vlastnosti.