staging.inyokaproject.org

Python Button/ Fenster ohne Rahmen

Status: Gelöst | Ubuntu-Version: Lubuntu 20.04 (Focal Fossa)
Antworten |

marant-

Anmeldungsdatum:
13. September 2021

Beiträge: 363

Hallo Leute,

Button ohne Rahmen bekomme ich nicht hin, meine erste Geschichte in Python, dementsprechend nahezu Null Kenntnisse. Kann nur besser werden.

Ausgehed von dem Script

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#! /usr/bin/python

''' switchHeadphones.py
Tkinter toggle button to switch microphone On/Off using a script 
Modification of the solution proposed in
    https://www.daniweb.com/posts/jump/1909448
for the Mic On/Off script from
    https://gist.github.com/OndraZizka/2724d353f695dacd73a50883dfdf0fc6
'''

# Define the path for the script below, e.g.,
script = "./switchHeadphones.sh"

try:
    # Python2
    import Tkinter as tk
except ImportError:
    # Python3
    import tkinter as tk
import os

__author__ = "Weslley S Pereira"
__email__ = "weslley.spereira@gmail.com"

def toggle(tog=[0]):
    '''
    a list default argument has a fixed address
    '''
    tog[0] = not tog[0]
    if tog[0]:
        os.system(script+' speak')
        t_btn.config(text='Switch Mic Off')
    else:
        os.system(script+' listen')
        t_btn.config(text='Switch Mic On')

root = tk.Tk()
root.title('Headphone  ')

t_btn = tk.Button(text='Switch Mic On', width=15, command=toggle)
t_btn.pack(pady=5)

root.mainloop()

Button geändert zu:

1
2
3
4
5
root = tk.Tk()
root.title('taste_leiser')

t_btn = tk.Button(text='LS -', width=10, activebackground='cyan', background='black', command=toggle)
t_btn.pack(pady=0)

Es gibt das Rahmen Problem des Buttons. (Button nicht aktiv, wenn Maus ganz am Desktoprand). Wie lässt sich das Rahmenlos gestalten? Auch den Button in geringer Pixelhöhe habe ich nicht hinbekommen, das macht derzeit der Fenstermanager.

MKV zur Verdeutlichung im Anhang.

Bearbeitet von rklm:

Syntaxhighlighting

Anhang

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Dem Button kann man die borderwidth und die highlightthickness mitgeben - vgl. https://tkdocs.com/shipman/button.html. Die Fensterdekoration, Position und Verhalten (also Rahmen, Titelleiste mit Knöpfen, Geometrie, Lage, Fenster bleibt über allen anderen usw.) kannst du über die Extended Window Manager Hints steuern - die möglichen Dekorationen findest du hier: https://www.tcl-lang.org/man/tcl/TkCmd/wm.htm#M19 und in https://stackoverflow.com/a/39530810 gibt es ein Beispiel, wie man das für ein Fester setzt.

marant-

(Themenstarter)

Anmeldungsdatum:
13. September 2021

Beiträge: 363

Danke Dir! Habe es so gemacht, ergibt Linie, die direkt am Desktoprand geklickt werden kann,

Links:

1
2
3
4
5
6
root = tk.Tk()
root.title('taste_leiser')
root.overrideredirect(1)
root.geometry("300x4+100+0")
t_btn = tk.Button(text='LS -', width=30, activebackground='cyan', background='black', command=toggle)
t_btn.pack(pady=0)

Prozent Angaben für ".geometrie" wären mir noch einen Tick lieber, so ist es auch schon Spitze.

Bearbeitet von rklm:

Syntaxhighlighting

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

marant- schrieb:

Prozent Angaben für ".geometrie" wären mir noch einen Tick lieber, so ist es auch schon Spitze.

Dafür müsstest du dir die Auflösung des Bildschirms holen (vgl. z.B. https://stackoverflow.com/a/3949983), dann kannst du einen prozentualen Anteil für GUI-Elemente in Pixeln berechnen.

marant-

(Themenstarter)

Anmeldungsdatum:
13. September 2021

Beiträge: 363

Ja, hatte ich beim Suchen auch schon gesehen. Mal in den nächsten Tagen probieren.

Das war Dein "10000". 👍

Antworten |