Verzweifle an GUI
Verfasst: Mittwoch 19. Februar 2014, 11:01
Guten Tag verehrte Python-ianer,
habe mir mit dem Qt-Designer ein Fenster erstellt:

Hier der windowUi.py Code:
sowie ein zweites Modul - main.py um die Funktionen zu definieren:
Das Problem ist, dass ich eigentlich wenn ich auf den lyrics-pdf und booklet-pdf Button drücke, will dass ich im Explorer einmal die Lyrics und einmal das Booklet laden will, so dass der Verzeichnispfad links im Fenster angezeigt wird. Ich bekomme das einfach nicht hin.
Weiter würde ich gerne, die ausgewählten bzw. eingetragenen Werte der Felder durch den save-txt Button in ein txt-File abspeichern lassen.
Wie kann ich die Werte aus den Felder auslesen und zusammen in ein txt-File abspeichern?
:K
Für jede kleine Hilfe wäre ich sehr verbunden und erfreut
habe mir mit dem Qt-Designer ein Fenster erstellt:

Hier der windowUi.py Code:
Code: Alles auswählen
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.setEnabled(True)
MainWindow.resize(507, 430)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
MainWindow.setSizePolicy(sizePolicy)
MainWindow.setMaximumSize(QtCore.QSize(507, 430))
MainWindow.setStyleSheet(_fromUtf8("font: 9pt \"MS Shell Dlg 2\";"))
#Test Button
self.btntest = QtGui.QPushButton(MainWindow)
self.btntest.setGeometry(QtCore.QRect(410, 20, 75, 23))
self.btntest.setMouseTracking(True)
self.btntest.setDefault(True)
self.btntest.setObjectName(_fromUtf8("TEST"))
#Erstellen von "Albumtitel" - Feldbeschriftung
self.Albumtitellabel = QtGui.QLabel(MainWindow)
self.Albumtitellabel.setGeometry(QtCore.QRect(20, 20, 111, 16))
self.Albumtitellabel.setStyleSheet(_fromUtf8("font: 9pt \"MS Shell Dlg 2\";"))
self.Albumtitellabel.setObjectName(_fromUtf8("Albumtitellabel"))
#Erstellen von "Erscheinungsjahr" - Feldbeschriftung
self.Erscheinungsjahrlabel = QtGui.QLabel(MainWindow)
self.Erscheinungsjahrlabel.setGeometry(QtCore.QRect(20, 50, 111, 16))
self.Erscheinungsjahrlabel.setObjectName(_fromUtf8("Erscheinungsjahrlabel"))
#Erstellen von "Traeger" - Feldbeschriftung
self.Traegerlabel = QtGui.QLabel(MainWindow)
self.Traegerlabel.setGeometry(QtCore.QRect(20, 110, 111, 16))
self.Traegerlabel.setStyleSheet(_fromUtf8("font: 9pt \"MS Shell Dlg 2\";"))
self.Traegerlabel.setObjectName(_fromUtf8("Traegerlabel"))
#Erstellen des Button "pdf-lyrics"
self.btnpdflyrics = QtGui.QToolButton(MainWindow)
self.btnpdflyrics.setGeometry(QtCore.QRect(360, 280, 71, 19))
self.btnpdflyrics.setMouseTracking(True)
self.btnpdflyrics.setAcceptDrops(True)
self.btnpdflyrics.setObjectName(_fromUtf8("btnpdflyrics"))
#Erstellen des Button "pdf-booklet"
self.btnpdfbooklet = QtGui.QToolButton(MainWindow)
self.btnpdfbooklet.setGeometry(QtCore.QRect(360, 310, 71, 19))
self.btnpdfbooklet.setMouseTracking(True)
self.btnpdfbooklet.setAcceptDrops(True)
self.btnpdfbooklet.setObjectName(_fromUtf8("btnpdfbooklet"))
#Erstellen des Feld für "pdf-lyrics" (listWidget_4 )
self.listWidget_4 = QtGui.QListWidget(MainWindow)
self.listWidget_4.setGeometry(QtCore.QRect(80, 280, 256, 21))
self.listWidget_4.setMouseTracking(False)
self.listWidget_4.setObjectName(_fromUtf8("listWidget_4"))
#Erstellen des Feld für "pdf-booklet" (listWidget_5)
self.listWidget_5 = QtGui.QListWidget(MainWindow)
self.listWidget_5.setGeometry(QtCore.QRect(80, 310, 256, 21))
self.listWidget_5.setMouseTracking(False)
self.listWidget_5.setObjectName(_fromUtf8("listWidget_5"))
#Erstellen des Button "save txt"
self.btnsavetxt = QtGui.QCommandLinkButton(MainWindow)
self.btnsavetxt.setGeometry(QtCore.QRect(20, 380, 101, 41))
self.btnsavetxt.setMouseTracking(True)
self.btnsavetxt.setToolTip(_fromUtf8(""))
self.btnsavetxt.setWhatsThis(_fromUtf8(""))
self.btnsavetxt.setAutoFillBackground(True)
self.btnsavetxt.setObjectName(_fromUtf8("btnsavetxt"))
#Erstellen des Button "Clear All"
self.btnclearall = QtGui.QPushButton(MainWindow)
self.btnclearall.setGeometry(QtCore.QRect(320, 210, 75, 23))
self.btnclearall.setMouseTracking(True)
self.btnclearall.setDefault(True)
self.btnclearall.setObjectName(_fromUtf8("btnClearAll"))
#Erstellen des Fortschrittbalken (Prozentangabe)
self.progressBar = QtGui.QProgressBar(MainWindow)
self.progressBar.setGeometry(QtCore.QRect(130, 390, 365, 20))
self.progressBar.setStyleSheet(_fromUtf8(""))
self.progressBar.setProperty("value", 1)
self.progressBar.setObjectName(_fromUtf8("progressBar"))
#Erstellen der "Trennlinie oben"
self.line = QtGui.QFrame(MainWindow)
self.line.setGeometry(QtCore.QRect(0, 240, 511, 16))
self.line.setMouseTracking(False)
self.line.setFrameShape(QtGui.QFrame.HLine)
self.line.setFrameShadow(QtGui.QFrame.Sunken)
self.line.setObjectName(_fromUtf8("line"))
#Erstellen der "Trennlinie unten"
self.line =QtGui.QFrame(MainWindow)
self.line.setGeometry(QtCore.QRect(0, 360, 511, 16))
self.line.setMouseTracking(False)
self.line.setFrameShape(QtGui.QFrame.HLine)
self.line.setFrameShadow(QtGui.QFrame.Sunken)
self.line.setObjectName(_fromUtf8("line"))
#Erstellen des Drop-Down-Menü mit den waehlbaren Möglichkeiten - für Format
self.comboBoxFormat = QtGui.QComboBox(MainWindow)
self.comboBoxFormat.setGeometry(QtCore.QRect(200, 80, 105, 22))
self.comboBoxFormat.setEditable(False)
self.comboBoxFormat.setMaxVisibleItems(6)
self.comboBoxFormat.setMaxCount(6)
self.comboBoxFormat.setMinimumContentsLength(1)
self.comboBoxFormat.setObjectName(_fromUtf8("comboBox"))
self.comboBoxFormat.addItem("wmv")
self.comboBoxFormat.addItem("mp3")
self.comboBoxFormat.addItem("mp4")
self.comboBoxFormat.addItem("divx")
self.comboBoxFormat.addItem("quicktime")
#Erstellen des Eingabefelds für "Erscheinungsjahr"
self.txtErscheinungsjahr = QtGui.QLineEdit(MainWindow)
self.txtErscheinungsjahr.setGeometry(QtCore.QRect(200, 50, 65, 20))
self.txtErscheinungsjahr.setInputMethodHints(QtCore.Qt.ImhDigitsOnly|QtCore.Qt.ImhFormattedNumbersOnly|QtCore.Qt.ImhNoPredictiveText|QtCore.Qt.ImhPreferNumbers)
self.txtErscheinungsjahr.setText(_fromUtf8(""))
self.txtErscheinungsjahr.setMaxLength(10)
self.txtErscheinungsjahr.setObjectName(_fromUtf8("txtErscheinungsjahr"))
#Erstellen des Eingabefelds für "Albumtitel"
self.txtAlbumtitel = QtGui.QLineEdit(MainWindow)
self.txtAlbumtitel.setGeometry(QtCore.QRect(200, 20, 111, 20))
self.txtAlbumtitel.setInputMethodHints(QtCore.Qt.ImhDigitsOnly|QtCore.Qt.ImhFormattedNumbersOnly|QtCore.Qt.ImhNoPredictiveText|QtCore.Qt.ImhPreferNumbers)
self.txtAlbumtitel.setText(_fromUtf8(""))
self.txtAlbumtitel.setMaxLength(11)
self.txtAlbumtitel.setReadOnly(False)
self.txtAlbumtitel.setObjectName(_fromUtf8("txtAlbumtitel"))
#Backup Eingabefeld für "Format"
self.Formatlabel = QtGui.QLabel(MainWindow)
self.Formatlabel.setGeometry(QtCore.QRect(20, 80, 41, 16))
self.Formatlabel.setObjectName(_fromUtf8("Formatlabel"))
#Erstellen des Eingabefelds für "Datum"
self.txtDatum = QtGui.QLineEdit(MainWindow)
self.txtDatum.setGeometry(QtCore.QRect(200, 140, 65, 20))
self.txtDatum.setText(_fromUtf8(""))
self.txtDatum.setMaxLength(20)
self.txtDatum.setObjectName(_fromUtf8("txtDatum"))
self.txtDatum.setMaxLength(10)
#Erstellen von "Datum" - Feldbeschriftung
self.Datumlabel = QtGui.QLabel(MainWindow)
self.Datumlabel.setGeometry(QtCore.QRect(20, 140, 170, 20))
self.Datumlabel.setStyleSheet(_fromUtf8("font: 9pt \"MS Shell Dlg 2\";"))
self.Datumlabel.setObjectName(_fromUtf8("Datumlabel"))
#Erstellen des Eingabefelds für "Genre"
self.txtGenre = QtGui.QLineEdit(MainWindow)
self.txtGenre.setGeometry(QtCore.QRect(200, 170, 100, 20))
self.txtGenre.setText(_fromUtf8(""))
self.txtGenre.setMaxLength(10)
self.txtGenre.setObjectName(_fromUtf8("txtGenre"))
#Erstellen von "Genre" - Feldbeschriftung
self.Genrelabel = QtGui.QLabel(MainWindow)
self.Genrelabel.setGeometry(QtCore.QRect(20, 170, 101, 16))
self.Genrelabel.setStyleSheet(_fromUtf8("font: 9pt \"MS Shell Dlg 2\";"))
self.Genrelabel.setObjectName(_fromUtf8("Genrelabel"))
#Erstellen von "Sprachcodelabel" - Feldbeschriftung
self.Sprachcodelabel = QtGui.QLabel(MainWindow)
self.Sprachcodelabel.setGeometry(QtCore.QRect(20, 200, 71, 16))
self.Sprachcodelabel.setStyleSheet(_fromUtf8("font: 9pt \"MS Shell Dlg 2\";"))
self.Sprachcodelabel.setObjectName(_fromUtf8("Sprachcodelabel"))
#Erstellen des Butten "Clear All"
self.btnClearAll = QtGui.QPushButton(MainWindow)
self.btnClearAll.setGeometry(QtCore.QRect(410, 210, 75, 23))
self.btnClearAll.setMouseTracking(True)
self.btnClearAll.setDefault(True)
self.btnClearAll.setObjectName(_fromUtf8("btnClearAll"))
#Erstellen des Drop-Down-Menue für "Sprachcode" mit waehlbaren Sprachen
self.comboBoxSprache = QtGui.QComboBox(MainWindow)
self.comboBoxSprache.setGeometry(QtCore.QRect(200, 200, 90, 22))
self.comboBoxSprache.setEditable(False)
self.comboBoxSprache.setMaxVisibleItems(5)
self.comboBoxSprache.setMaxCount(5)
self.comboBoxSprache.setMinimumContentsLength(1)
self.comboBoxSprache.setObjectName(_fromUtf8("comboBox"))
self.comboBoxSprache.addItem("D - deutsch")
self.comboBoxSprache.addItem("E - englisch")
self.comboBoxSprache.addItem("F - französisch")
self.comboBoxSprache.addItem("P - polnisch")
self.comboBoxSprache.addItem("T - türkisch")
#Erstellen des Drop-Down-Menue für "Informationstraeger" mit waehlbaren Arten
self.comboBoxInformationstraeger = QtGui.QComboBox(MainWindow)
self.comboBoxInformationstraeger.setGeometry(QtCore.QRect(200, 110, 256, 22))
self.comboBoxInformationstraeger.setObjectName(_fromUtf8("comboBox_2"))
self.comboBoxInformationstraeger.setEditable(False)
self.comboBoxInformationstraeger.addItem("Platte")
self.comboBoxInformationstraeger.addItem("Kasette")
self.comboBoxInformationstraeger.addItem("CD")
self.comboBoxInformationstraeger.addItem("DVD")
self.comboBoxInformationstraeger.addItem("Blue-Ray")
self.comboBoxInformationstraeger.addItem("Festplatte")
#Aktion - Eintraege aus den Eingabefeldern "Albumtitel","Erscheinungsjahr",
#"Datum" und "Albumtitel" durch drücken des Button "Clear All"
#entfernen bzw. loeschen
self.retranslateUi(MainWindow)
QtCore.QObject.connect(self.btnClearAll, QtCore.SIGNAL(_fromUtf8("clicked()")), self.txtAlbumtitel.clear)
QtCore.QObject.connect(self.btnClearAll, QtCore.SIGNAL(_fromUtf8("clicked()")), self.txtErscheinungsjahr.clear)
QtCore.QObject.connect(self.btnClearAll, QtCore.SIGNAL(_fromUtf8("clicked()")), self.txtDatum.clear)
QtCore.QObject.connect(self.btnClearAll, QtCore.SIGNAL(_fromUtf8("clicked()")), self.txtGenre.clear)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
#Eintraege der jeweiligen Beschriftungslabel der Feldbeschriftungen
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "Archiver", None))
self.Albumtitellabel.setText(_translate("MainWindow", "Albumtitel:", None))
self.Erscheinungsjahrlabel.setText(_translate("MainWindow", "Erscheinungsjahr:", None))
self.Traegerlabel.setText(_translate("MainWindow", "Träger:", None))
self.btnpdflyrics.setText(_translate("MainWindow", "pdf - Lyrics", None))
self.btnpdfbooklet.setText(_translate("MainWindow", "pdf - Booklet", None))
self.btnsavetxt.setText(_translate("MainWindow", "save txt", None))
self.Formatlabel.setText(_translate("MainWindow", "Format:", None))
self.Datumlabel.setText(_translate("MainWindow", "Datum - ddmmyyyy:", None))
self.Genrelabel.setText(_translate("MainWindow", "Genre:", None))
self.Sprachcodelabel.setText(_translate("MainWindow", "Sprache:", None))
self.btnClearAll.setText(_translate("MainWindow", "Clear All", None))
self.btntest.setText(_translate("MainWindow","TEST", None))
Code: Alles auswählen
import os,sys
import time
import glob
from tkinter import *
from PyQt4.QtGui import QDialog, QApplication, QPushButton, QLineEdit, QFormLayout
root=Tk()
#Einbinden der Bibliotheken
from PyQt4 import QtCore,QtGui
#Einbinden des GUI Code (windowUI.py)
from windowUi import Ui_MainWindow
class Main(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui=Ui_MainWindow()
self.ui.setupUi(self)
self.ui.btntest.clicked.connect(self.btntest_clicked)
self.ui.btnpdfbooklet.clicked.connect(self.openFile)
#Funktion für Button "Test"
def btntest_clicked(self):
self.ui.txtAlbumtitel.setText("Best Of")
self.ui.txtErscheinungsjahr.setText("11.11.2014")
self.ui.txtDatum.setText("19.02.2014")
self.ui.txtGenre.setText("Rock")
#Funktion für Button "Datum"
def btndatum_clicked(self):
self.ui.txtDatum.setText("13.02.2014")
#Funktion für Button "PDF-Booklet"
def btnpdfbooklet_clicked(self):
self.ui.btnpdfbooklet.clicked.connect(self.openFile)
#Verzeichnis zum laden öffnen - geht noch nicht -.-
def openFile(btntest_clicked):
openFile = QtGui.QAction(QtGui.QIcon('open.png'), 'Open', self)
openFile.setShortcut('Ctrl+O')
openFile.setStatusTip('Open pdf-Doku')
fileMenu = btnpdfbooklet_clicked.openFile('&File')
fileMenu.addAction(openFile)
self.setGeometry()
self.setWindowTitle('File dialog')
self.show()
def showDialog(self):
fname = QtGui.QFileDialog.getOpenFileName(self, 'Open pdf-Booklet', '/home')
f = open(fname, 'r')
def main():
app = QtGui.QApplication(sys.argv)
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
window=Main()
window.show()
gui = ComboBoxBasic()
sys.exit(app.exec_())
ex = Example()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = Main()
window.show()
sys.exit(app.exec_())
Weiter würde ich gerne, die ausgewählten bzw. eingetragenen Werte der Felder durch den save-txt Button in ein txt-File abspeichern lassen.
Wie kann ich die Werte aus den Felder auslesen und zusammen in ein txt-File abspeichern?
:K
Für jede kleine Hilfe wäre ich sehr verbunden und erfreut
