主程序中的textvariable在函数中无法赋值
时间: 2024-03-26 16:40:37 浏览: 13
如果您想在函数中给`textvariable`赋值,需要使用`StringVar`对象的`set`方法。例如,假设您有一个`Label`控件,其`textvariable`为`var`:
```python
from tkinter import *
root = Tk()
var = StringVar()
label = Label(root, textvariable=var)
label.pack()
def set_var():
var.set("New value")
button = Button(root, text="Set var", command=set_var)
button.pack()
root.mainloop()
```
上面的代码中,我们创建了一个`StringVar`对象`var`,并将其作为`Label`控件的`textvariable`。然后,我们定义了一个`set_var`函数,该函数调用`var`的`set`方法来更改其值。最后,我们创建了一个`Button`控件,单击该控件会调用`set_var`函数来更改`var`的值。
相关问题
如何在while中给一个void函数赋值
在 C/C++ 中,`void` 函数不返回任何值,因此无法直接将其赋值给变量。`void` 函数通常用于执行操作而不返回结果。
如果您要在 `while` 循环中调用 `void` 函数,并且希望使用函数的执行结果进行赋值,您可以考虑使用全局变量或者传递指针作为参数来实现。
以下是两种可能的方法:
1. 使用全局变量:
- 定义一个全局变量,用于存储函数的执行结果。
- 在 `void` 函数中修改全局变量的值。
- 在 `while` 循环中使用该全局变量的值。
例如:
```cpp
// 全局变量
int result = 0;
// void 函数修改全局变量的值
void myVoidFunction()
{
result = 42;
}
int main()
{
while (true)
{
// 调用 void 函数
myVoidFunction();
// 使用全局变量的值
int value = result;
// 进一步处理...
}
return 0;
}
```
2. 传递指针作为参数:
- 将需要赋值的变量的地址作为参数传递给 `void` 函数。
- 在 `void` 函数中通过指针修改变量的值。
- 在 `while` 循环中使用已经被修改的变量。
例如:
```cpp
// void 函数通过指针修改参数的值
void myVoidFunction(int* ptr)
{
*ptr = 42;
}
int main()
{
int value = 0;
while (true)
{
// 调用 void 函数,并传递变量的地址
myVoidFunction(&value);
// 使用已经被修改的变量
int modifiedValue = value;
// 进一步处理...
}
return 0;
}
```
请根据您的具体需求选择适合的方法。如果您需要在 `void` 函数中返回值,考虑将函数的返回类型改为需要的类型,并使用 `return` 语句返回结果。
在类中定义一个结构体并用函数赋值
假设我们有一个名为“Student”的类,现在我们要在类中定义一个名为“Info”的结构体,并用一个函数来为它赋值。
```c++
#include <iostream>
using namespace std;
class Student {
public:
struct Info {
string name;
int age;
string major;
};
void setInfo(string name, int age, string major) {
info.name = name;
info.age = age;
info.major = major;
}
void printInfo() {
cout << "Name: " << info.name << endl;
cout << "Age: " << info.age << endl;
cout << "Major: " << info.major << endl;
}
private:
Info info;
};
int main() {
Student s;
s.setInfo("Tom", 20, "Computer Science");
s.printInfo();
return 0;
}
```
在上面的代码中,我们在“Student”类中定义了一个名为“Info”的结构体,并在类中定义了两个函数来为它赋值和输出。在“setInfo”函数中,我们将传入的参数分别赋值给结构体中的成员变量。在“printInfo”函数中,我们输出结构体中的成员变量。最后,在主函数中,我们创建了一个“Student”对象,并调用了“setInfo”和“printInfo”函数来为结构体赋值并输出它的内容。