0

これについて、あなたの助けを求めたいと思います。

フレームをクリアしてから、新しい要素を追加しようとしています。ただし、すべての要素をクリアした後、新しい要素を追加しても表示されません。私の問題について少し光を当ててください。ありがとう

これが私のコードです

#!/usr/bin/env python

import Tkinter as tk
import socket
import sys

def next(line, num):
    s.send(line)
    data= s.recv(size)
    num.set(data)

class Client(tk.Frame):

    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.grid()
        self.configHost()

    def configHost(self):
        self.hostEntry = tk.Entry(self, justify=tk.CENTER);
        self.hostLabel = tk.Label(self, text='Host')
        self.connectButton = tk.Button(self, text='Connect', command=lambda:self.startServe())

        self.hostLabel.grid(row=0, column=0, ipadx=10, ipady=10)
        self.hostEntry.grid(row=0, column=1, columnspan=4, pady=20, padx=20, ipadx=5, ipady=5)
        self.connectButton.grid(column=2,pady=10)

    def startServe(self):
        hostnum = self.hostEntry.get()
        port = 50000
        size = 1024
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((hostnum,port))

        if s >= 0:
            self.grid_forget()
            tk.Frame.__init__(self, master=None)
            self.grid()     
            self.nowServingLabel= tk.Label(self, text="Sample") 
            self.button = tk.Button(self, text='Connect')
            self.nowServingLabel.grid()
            self.button.grid()
4

1 に答える 1

0

フレームコンストラクターを複数回呼び出すことは非常にまれです。ほとんどの場合、それが問題の原因です。それが裏で何をしているのかはわかりませんが、クラスはそのように機能するように設計されていません。

また、grid_forget はビューからウィジェットを削除するだけで、ウィジェットを破棄しないことをご存知ですか? ウィジェットを「忘れて」再作成し続けると、メモリ リークが発生します。

于 2013-04-18T10:45:58.783 に答える