Habe bei deinem Skript hauptsächlich .place() durch .pack() ersetzt und die Reihenfolge der Anweisungen und Funktionen geändert. Wie du schon selber festgestellt hast darf man Tkinker.Tk() in einer Anwendung nicht zweimal benützen. Weiter benötigte Fenster sollten also mit Tkinter.Toplevel() erzeugt werden:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from functools import partial
import Tkinter as tk
import threading
import socket
import os
import sqlite3
CREATE_TABLE = '''CREATE TABLE IF NOT EXISTS Adressenliste(
id INTEGER PRIMARY KEY, ktoNum INT UNIQUE, vorName TEXT, nachName TEXT)'''
SELECT_01 = '''SELECT ktoNum, vorName, nachName FROM Adressenliste'''
def run(start_Server,start_Client):
get_IP = [TCP_IP for TCP_IP in socket.gethostbyname_ex(
socket.gethostname())[2] if not TCP_IP.startswith("127.")][:1]
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_address = ((TCP_IP, 0))
sock.bind(server_address)
TCP_PORT = sock.getsockname()[1]
ipPort = "SERVER GESTARTET:\nIP-Adresse: {}\nPort: {}".format(str(TCP_IP),
str(TCP_PORT))
start_Server.set(ipPort)
sock.listen(5)
while True:
client,addr = sock.accept()
now = datetime.datetime.now()
currentTime = now.strftime("%d.%m.%Y, %H:%M:%S")
server_Message = "\n---> DMD-Server ("+str(currentTime)+")\n"
client.send(server_Message)
data = client.recv(25000)
json_data = json.loads(data)
user = json_data['User']
client_Message = "\n---> "+str(user)+" ("+str(currentTime)+")\n"
start_Client.set(client_Message)
print json_data
client.close()
sock.close()
def haupt_Start():
ka_fenster = tk.Toplevel()
#ka_fenster = tk.Tk()
ka_fenster.title('DMD-DATA.soft')
ka_fenster.geometry('600x300+485+200')
frame = tk.Frame(ka_fenster)
frame.pack(expand=True)
kontonummer = tk.StringVar()
e_ka6 = tk.Entry(frame,
textvariable=kontonummer, width=6, relief="sunken", borderwidth=3,
fg='#000000000', justify='center')
e_ka6.pack(pady=4)
#e_ka6.place(relx=.53, rely=.3, anchor="w")
var1 = tk.IntVar()
def konto_nummerNEU():
desktopFile = os.path.expanduser("~\Desktop")
path_grund = desktopFile+'\Beispielordner\SYSTEM'
path_adressen = path_grund+'\Adressenliste'
SQL_Adressdateien = '%s\\Adressenliste.db' %(path_adressen)
try:
os.makedirs(path_adressen)
except: # IOError:
print('Das Verzeichnis {} existiert bereits'.format(path_adressen))
pass
con = sqlite3.connect(SQL_Adressdateien)
cursor = con.cursor()
cursor.execute(CREATE_TABLE)
cursor = con.cursor()
cursor.execute(SELECT_01)
aktuellesKontoisa = cursor.fetchall()
try:
num_List = []
for numbas in aktuellesKontoisa:
v_number = numbas[0]
num_List.append(v_number)
a = sorted(num_List)
nums = (b for a,b in izip(a,count(a[0])) if a != b)
freeNum = next(nums,'None')
if freeNum != 'None':
kontonummer.set(freeNum)
else:
freeNum = a[-1] + 1
kontonummer.set(freeNum)
except:
freeNum = 0
kontonummer.set(freeNum)
con.close()
print freeNum
b_ka1 = tk.Button(frame,
text=('Nächste freie\nBV-Nummer'), width=15, height=2, relief="raised",
borderwidth=3, fg='#000000', justify='center',command=konto_nummerNEU)
b_ka1.pack(pady=4)
#b_ka1.place(relx=.48, rely=.45, anchor="w")
def beenden(backwin):
backwin.destroy()
def main():
backwin = tk.Tk()
backwin.title('DMD-DATA.soft')
#backwin.state('zoomed')
backwin.configure(background='black')
frame = tk.Frame(backwin, bg=backwin['bg'])
frame.pack(expand=True, padx=4, pady=4)
b1 = tk.Button(frame,
text=("\nSTART\n"), font=('Arial', 10, 'bold'), width=20,
relief="raised", borderwidth=3, fg='#000000000', justify='center',
highlightthickness=0, command=haupt_Start)
b1.pack(pady=4)
#b1.place(relx=.51, rely=.4, anchor="c")
b2 = tk.Button(frame,
text=("\nBEENDEN\n"), font=('Arial', 10, 'bold'), width=20,
relief="raised", borderwidth=3, fg='#000000000', justify='center',
highlightthickness=0, command=partial(beenden, backwin))
b2.pack(pady=4)
#b2.place(relx=.51, rely=.55, anchor="c")
start_Server = tk.StringVar()
l_sf1 = tk.Label(frame,
textvariable=(start_Server),font=('Arial', 8, 'bold'), height=3,
width=25, fg="#000000000",justify='left')
l_sf1.pack(pady=4)
#l_sf1.place(relx=.06, rely=.965, anchor="c")
start_Client = tk.StringVar()
l_sf2 = tk.Label(frame,
textvariable=(start_Client),font=('Arial', 8, 'bold'), height=3,
width=35, fg="#000000000",justify='left')
l_sf2.pack(pady=4)
#l_sf2.place(relx=.2, rely=.965, anchor="c")
new_thread = threading.Thread(target=run,args=(start_Server,start_Client,))
new_thread.start()
backwin.mainloop()
if __name__ == "__main__":
main()