ich habe ein Problem mit der Anordnung meiner Tkinter Widgets (Label, Button, Text).
Ich habe das mit dem Grid Geometry Manager versucht.
Aber ich bekomme die Anordnung der einzelnen Elementen nicht so hin wie ich es haben möchte.
Die Abständen zwischen den einzelnen Elementen ist mir zu groß.
Wie kann ich das ändern ?
Ist das mit "Grid" zu machen oder muss ich etwas anderes nehmen.
Das Ziel ist:
1. die Anordnung so zu gestalten wie im Beispiel-Bild "sz2.gif"
2. Wenn das Fenster maximiert wird soll die Anordnung der Elemente mit wandern (d.h. der Button "Service" soll unten rechts bleiben).
Code: Alles auswählen
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 30 12:44:05 2017
@author: Juergen
"""
"""
ZetCode Tkinter tutorial
In this script, we use the grid
manager to create a more complicated
layout.
Author: Jan Bodnar
Last modified: December 2015
Website: http://www.zetcode.com
"""
# Beispiel von:
# http://zetcode.com/gui/tkinter/layout/
import tkinter as tk
from tkinter.ttk import Frame, Button, Label, Style
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.parent = parent
self.initUI()
self.style = Style()
self.style.theme_use("default")
def initUI(self):
self.parent.title("Steuerzentrale")
self.pack(fill='both', expand=True)
self.columnconfigure(0, weight=1)
self.columnconfigure(1, weight=1)
self.columnconfigure(2, weight=1)
self.columnconfigure(3, weight=1)
self.columnconfigure(4, weight=1)
self.rowconfigure(0, weight=1)
self.rowconfigure(1, weight=1)
self.rowconfigure(2, weight=1)
self.rowconfigure(3, weight=1)
self.rowconfigure(4, weight=1)
self.rowconfigure(5, weight=1)
self.rowconfigure(6, weight=1)
self.var = tk.IntVar()
self.var.set(1) # Default Alarmzone A
text_label1 = tk.Label(self, font = 12,text="Alarmzone", width=20)
text_label1.grid(row=0, column=0, sticky='n', padx=5, pady=5)
#area = tk.Text(self)
#area.grid(row=2, column=1, columnspan=1, rowspan=1,
# padx=5, sticky='e'+'w'+'s'+'n')
# RadioButton
radiobutton_1 = tk.Radiobutton(self, text="A", font = 12, variable=self.var, value= 1, command=self.sel)
radiobutton_1.grid(row=1, column=0)
radiobutton_2 = tk.Radiobutton(self, text="B", font = 12, variable=self.var, value= 2, command=self.sel)
radiobutton_2.grid(row=1, column=1)
radiobutton_3 = tk.Radiobutton(self, text="C", font = 12, variable=self.var, value= 3, command=self.sel)
radiobutton_3.grid(row=1, column=2)
radiobutton_4 = tk.Radiobutton(self, text="D", font = 12, variable=self.var, value= 4, command=self.sel)
radiobutton_4.grid(row=1, column=3)
text = tk.Text(self, height=5, width=30)
text.grid(row=2, column=1)
alarm_on = tk.Button(self, text="Alarm aktivieren", width=20)
alarm_on.grid(row=1, column=4)
alarm_status = tk.Label(self, text="Alarm inaktiv", width=20)
alarm_status.grid(row=2,column=4)
feueralarm = tk.Button(self, text="Feueralarm", width=20)
feueralarm.grid(row=3, column=4, pady=5)
medical = tk.Button(self, text="Medical", width=20)
medical.grid(row=4, column=4)
panik = tk.Button(self, text="Panik", width=20)
panik.grid(row=5, column=4)
service = tk.Button(self, text="Service", width=20)
service.grid(row=6, column=4, padx=0)
close = tk.Button(self, text="Close", command=self.quit, width=15)
close.grid(row=6, column=0)
text.insert('end', "Alarmtext_1\nAlarmtext_2\n")
def sel(self):
selection = tk.StringVar()
if self.var.get() == 1:
selection = "A"
elif self.var.get() == 2:
selection = "B"
elif self.var.get() == 3:
selection = "C"
else:
selection = "D"
text_label2 = tk.Label(self, font = 12, text = selection)
text_label2.grid(row=0, column=0, padx= 50)
def main():
root = tk.Tk()
# geometry(X*Y+Offset)
root.geometry("800x450+100+100")
tk.app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
MfG
Juergen B.