Abend!
Also ich habe nun endlich mein Script.Game.Interface geschrieben - funktioniert: Skript ist änderbar und Datei wird erzeugt und so. ^^
Jedenfalls also so die Grundlage.
Doch ich würde gerne Bilder bzw Videos einfügen,doch so, dass man diese nicht am PC oder Internet haben muss.
Edliche Programme die z.b. eine ".exe" sind , haben Bilder integriert, ohne, dass man sie irgendwo auf'm PC findet oder Internet braucht, also im Programm implementiert.
Weiß nur nicht wie das gehen soll?
Mit freundlichen Grüßen,
xXSkyWalkerXx1
Bilder und Videos in Programm einbinden
Mit Python geht es nicht. Selbst wenn man da eine EXE erstellt mit py2exe und Co ist das immer noch ein Sack von Dateien. Meistens pyc files mit Python Code drin, aber natürlich auch alle möglichen anderen Dateien, die man braucht. Die werden dann einfach relativ zum Code abgelegt und vom Code dann einfach benutzt.
Theoretisch kannst du binäre Daten auch in ein Python Modul kodieren, und dann statt Dateien Code importieren. Wirklich dolle ist das nicht, weil man je nach GUI Library dann doch wieder eine externe Datei daraus machen muss. Ist also eher augenwischerei.
Theoretisch kannst du binäre Daten auch in ein Python Modul kodieren, und dann statt Dateien Code importieren. Wirklich dolle ist das nicht, weil man je nach GUI Library dann doch wieder eine externe Datei daraus machen muss. Ist also eher augenwischerei.
-
- User
- Beiträge: 379
- Registriert: Mittwoch 27. Juni 2018, 17:39
Also kann ich nur Programm in ner Zip stecken (oder wo auch immer) und die Bilder/Videos ebenfalls in diese Zip.
So kann ich das Programm wenigstens verschicken.
So kann ich das Programm wenigstens verschicken.
Nicht nur theoretisch, imho in Python wohl die einzige Möglichkeit (lasse mich gerne vom Gegenteil überzeugen).
Hier https://github.com/robertgallup/bmp2hex bmp2hex - Graphics bitmap file to C-style hex converter
hat jemand das für C-Style Code gemacht.
Kannst du eventuell so umwandeln, dass ein Python-Modul dabei rauskommt.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Wieso die einzige Möglichkeit? Ich habe doch schon beschrieben, wie man es anders machen kann. Einfach Dateien daneben legen. Der TE wünscht sich (aus dem Kontext seiner anderen Posts heraus) ein stand-alone Exexcutable. Das gibt es für Python nicht. Man kann zwar allen Code und alle Daten in ein riesen Modul packen. Nur fehlt da ja dann der Interpreter. Will man sein Programm also vernünftig ausliefern, greift man eh zu einem Installer, der gleich alles mitliefert. Die einzige Alternative wäre ein statisch gelinktes EXE mit allem Python
Code und Daten darin. Aber das existiert mE nicht, und aus der Erfahrung einen Python Interpreter eingebettet an unsere Kunden auszuliefern kann ich auch nur davon abraten, das basteln zu wollen. Den TE überfordert es allemal.
Code und Daten darin. Aber das existiert mE nicht, und aus der Erfahrung einen Python Interpreter eingebettet an unsere Kunden auszuliefern kann ich auch nur davon abraten, das basteln zu wollen. Den TE überfordert es allemal.
-
- User
- Beiträge: 379
- Registriert: Mittwoch 27. Juni 2018, 17:39
Ich denke mal, ich werds halt einfach machen: Programm in eine ZIP packen und in der gleichen ZIP die ganzen Bilder/Videos.
- __blackjack__
- User
- Beiträge: 13003
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Manche GUI-Toolkits können auch Bilder in Formaten wie X PixMaps direkt aus dem Programm ”konsumieren”. Hier ein Beispiel das ich neulich in einem anderen Forum gepostet hatte (eine Portierung eines C++-Beispielprogramms für FLTK nach Python und Qt4):
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf-8
from __future__ import absolute_import, division, print_function
import sys
from PyQt4 import uic
from PyQt4.QtCore import QSize
from PyQt4.QtGui import (
QApplication, QIcon, QListWidgetItem, QMessageBox, QPixmap,
)
CAT_XPM = [
'50 34 4 1',
' c black',
'o c #ff9900',
'@ c #ffffff',
'# c None',
'##################################################',
'### ############################## ####',
'### ooooo ########################### ooooo ####',
'### oo oo ######################### oo oo ####',
'### oo oo ####################### oo oo ####',
'### oo oo ##################### oo oo ####',
'### oo oo ################### oo oo ####',
'### oo oo oo oo ####',
'### oo oo ooooooooooooooo oo oo ####',
'### oo ooooooooooooooooooooo oo ####',
'### oo ooooooooooooooooooooooooooo ooo ####',
'#### oo ooooooo ooooooooooooo ooooooo oo #####',
'#### oo oooooooo ooooooooooooo oooooooo oo #####',
'##### oo oooooooo ooooooooooooo oooooooo oo ######',
'##### o ooooooooooooooooooooooooooooooo o ######',
'###### ooooooooooooooooooooooooooooooooooo #######',
'##### ooooooooo ooooooooo ooooooooo ######',
'##### oooooooo @@@ ooooooo @@@ oooooooo ######',
'##### oooooooo @@@@@ ooooooo @@@@@ oooooooo ######',
'##### oooooooo @@@@@ ooooooo @@@@@ oooooooo ######',
'##### oooooooo @@@ ooooooo @@@ oooooooo ######',
'##### ooooooooo ooooooooo ooooooooo ######',
'###### oooooooooooooo oooooooooooooo #######',
'###### oooooooo@@@@@@@ @@@@@@@oooooooo #######',
'###### ooooooo@@@@@@@@@ @@@@@@@@@ooooooo #######',
'####### ooooo@@@@@@@@@@@ @@@@@@@@@@@ooooo ########',
'######### oo@@@@@@@@@@@@ @@@@@@@@@@@@oo ##########',
'########## o@@@@@@ @@@@@ @@@@@ @@@@@@o ###########',
'########### @@@@@@@ @ @@@@@@@ ############',
'############ @@@@@@@@@@@@@@@@@@@@@ #############',
'############## @@@@@@@@@@@@@@@@@ ###############',
'################ @@@@@@@@@ #################',
'#################### #####################',
'##################################################',
]
def main():
application = QApplication(sys.argv)
window = uic.loadUi('test.ui')
cat_pixmap = QPixmap(CAT_XPM)
# Leave some space for text under the item.
size = cat_pixmap.size() + QSize(0, 20)
window.thumbnails.setIconSize(size)
window.thumbnails.setGridSize(size + QSize(30, 30))
cat_icon = QIcon(cat_pixmap)
for i in xrange(40):
QListWidgetItem(cat_icon, format(i, '04d'), window.thumbnails)
window.thumbnails.itemClicked.connect(
lambda item: QMessageBox.information(
window,
'Title',
"Thumbnail '{}' clicked.".format(item.text()),
)
)
window.show()
sys.exit(application.exec_())
if __name__ == '__main__':
main()
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
- __blackjack__
- User
- Beiträge: 13003
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@__deets__: Nö, wollen würde ich das auch nicht. `StringIO` braucht man auch gar nicht, die Bilderklassen in `Tkinter` kennen ein `data`-Schlüsselwortargument bei dem man direkt die Binärdaten übergeben kann. Und die kann man beispielsweise Base64-kodiert als Konstanten in den Quelltext schreiben (lassen). Das hat wuf schon bei einigen seiner Beispiele hier im Forum so gemacht um komplette Beispiele zu haben ohne das man noch Bilder irgendwo hinterlegen/runterladen muss.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
-
- User
- Beiträge: 379
- Registriert: Mittwoch 27. Juni 2018, 17:39
Und wie siehts nun eigentlich mit'n einbetten von Videos aus?
Also mit Videos aus meiner Festplatte.
Also mit Videos aus meiner Festplatte.
- __blackjack__
- User
- Beiträge: 13003
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@xXSkyWalkerXx1: Wäre der erste Schritt nicht erst einmal abspielen, bevor Du ans einbetten denkst?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
-
- User
- Beiträge: 379
- Registriert: Mittwoch 27. Juni 2018, 17:39
Aber um ein Video abspielen zu können (als Nutzer des Programmes, nicht als Programmierer), muss einem das Video nicht erstmal angezeigt werden?
Damit man es überhaupt abspielen kann.
Damit man es überhaupt abspielen kann.
- __blackjack__
- User
- Beiträge: 13003
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Häh?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
-
- User
- Beiträge: 379
- Registriert: Mittwoch 27. Juni 2018, 17:39
Naja, ich möchte ja Videos in meinem Programm haben bzw anzeigen.
Du hast gesagt, dass man es erstmal abspielen muss anstatt erst einzubetten: "Wäre der erste Schritt nicht erst einmal abspielen, bevor Du ans einbetten denkst?"
Du hast gesagt, dass man es erstmal abspielen muss anstatt erst einzubetten: "Wäre der erste Schritt nicht erst einmal abspielen, bevor Du ans einbetten denkst?"
- __blackjack__
- User
- Beiträge: 13003
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Ja genau, und Deine Antwort darauf verstehe ich nicht. Solange Du das Video in Deinem Programm nicht abspielen kannst, macht es wenig Sinn darüber nachzudenken ob und wie man die Datei einbetten kann.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
-
- User
- Beiträge: 379
- Registriert: Mittwoch 27. Juni 2018, 17:39
Achsoo... Okey, hättest vllt genauer formulieren sollen. ^^
Naja, abgespielt sollte es eigentlich per Mausklick auf's Video bzw Thumbnail - was auch immer richtig wäre.
Z.B. wenn man YouTube Videos in einem Forumpost einbettet, da klickt man ja auch bloß aufs Video.
Naja, abgespielt sollte es eigentlich per Mausklick auf's Video bzw Thumbnail - was auch immer richtig wäre.
Z.B. wenn man YouTube Videos in einem Forumpost einbettet, da klickt man ja auch bloß aufs Video.
- __blackjack__
- User
- Beiträge: 13003
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Und wie machst Du das?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
-
- User
- Beiträge: 379
- Registriert: Mittwoch 27. Juni 2018, 17:39
Das weiß ich eben nicht.
Kannst du es vllt erklären, wie ich das Ziel erreichen kann?
Heißt jetzt nicht unbedingt fertigen Code, aber so schritte/Erklärung wie ich zum Ziel komme, wäre sehr gut und nett.
Kannst du es vllt erklären, wie ich das Ziel erreichen kann?
Heißt jetzt nicht unbedingt fertigen Code, aber so schritte/Erklärung wie ich zum Ziel komme, wäre sehr gut und nett.
-
- User
- Beiträge: 379
- Registriert: Mittwoch 27. Juni 2018, 17:39
Also, das hier wäreso ein Beispiel, wie es aussehen soll:
Da, wo die schwarze Leinwand (Canvas) ist, da soll das Video abgespielt werden.
Hätte es zwar gern, dass man wie bei YouTube bloß auf das Video klicken muss, aber glaube mit Button ist es vllt einfacher - weiß nicht?
Wie lasse ich nun da ein Video abspielen und wie ein Bild?
PS. mit PhotoImage kommt immer ein Fehler mit "couldn't recognized data in image" oder so ähnlich.
Code: Alles auswählen
import tkinter, os
main = tkinter.Tk()
main.geometry("500x304")
main.title("Video Player - Test")
def playVideo1():
os.system("/media/pi/DISK_IMG/Filme/Zombieland.mp4")
canvas = tkinter.Canvas(main,background="black")
canvas.pack(side="top")
playBTN = tkinter.Button(main, text="Play Video",command=playVideo1)
playBTN.place(x=250,y=300,anchor="s")
Hätte es zwar gern, dass man wie bei YouTube bloß auf das Video klicken muss, aber glaube mit Button ist es vllt einfacher - weiß nicht?
Wie lasse ich nun da ein Video abspielen und wie ein Bild?
PS. mit PhotoImage kommt immer ein Fehler mit "couldn't recognized data in image" oder so ähnlich.